← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug-1348795 into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1348795 into lp:widelands.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1310774 in widelands: "Problems with translating "%1$s %2$s mine %3$s""
  https://bugs.launchpad.net/widelands/+bug/1310774
  Bug #1348795 in widelands: "Remove remaining users of wl_range"
  https://bugs.launchpad.net/widelands/+bug/1348795

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1348795/+merge/228430

Removed wl_range and did a complete reworking of the production program strings. Translators now get longer pieces of sentences and English finally sounds natural as well.
-- 
https://code.launchpad.net/~widelands-dev/widelands/bug-1348795/+merge/228430
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1348795 into lp:widelands.
=== modified file 'src/base/i18n.cc'
--- src/base/i18n.cc	2014-07-23 14:49:10 +0000
+++ src/base/i18n.cc	2014-07-27 19:35:31 +0000
@@ -27,6 +27,8 @@
 #include <map>
 #include <utility>
 
+#include <boost/format.hpp>
+
 #include "base/log.h"
 #include "config.h"
 
@@ -315,4 +317,39 @@
 
 const std::string & get_locale() {return locale;}
 
+
+/***********
+
+  Locale-dependent string functions
+
+***************/
+
+std::string localize_item_list(std::vector<std::string> items, bool is_concatenation) {
+	std::string result = "";
+	for (std::vector<std::string>::const_iterator it = items.begin(); it != items.end(); ++it) {
+		if (it == items.begin()) {
+			result = *it;
+		}
+		else if (it == --items.end()) {
+			if (is_concatenation) {
+				/** TRANSLATORS: Concatenate the last 2 items on a list. */
+				/** TRANSLATORS: RTL languages might want to change the word order here. */
+				result = (boost::format(_("%1$s and %2$s")) % result % (*it)).str();
+			}
+			else {
+				/** TRANSLATORS: Join the last 2 items on a list with "or". */
+				/** TRANSLATORS: RTL languages might want to change the word order here. */
+				result = (boost::format(_("%1$s or %2$s")) % result % (*it)).str();
+			}
+		}
+		else {
+			/** TRANSLATORS: Concatenate 2 items at in the middle of a list. */
+			/** TRANSLATORS: RTL languages might want to change the word order here. */
+			result = (boost::format(_("%1$s, %2$s")) % result % (*it)).str();
+		}
+	}
+	return result;
+}
+
+
 }

=== modified file 'src/base/i18n.h'
--- src/base/i18n.h	2014-07-05 16:41:51 +0000
+++ src/base/i18n.h	2014-07-27 19:35:31 +0000
@@ -52,6 +52,10 @@
 const std::string & get_locale();
 
 void set_localedir(std::string);
+
+// localize a list of items. If is_concatenation, use "and", else use "or".
+std::string localize_item_list(std::vector<std::string> items, bool is_concatenation);
+
 }
 
 #endif  // end of include guard: WL_BASE_I18N_H

=== modified file 'src/logic/instances.h'
--- src/logic/instances.h	2014-07-26 10:43:23 +0000
+++ src/logic/instances.h	2014-07-27 19:35:31 +0000
@@ -90,10 +90,10 @@
  */
 struct Map_Object_Descr {
 
-	Map_Object_Descr(const Map_Object_Type type,
+	Map_Object_Descr(const Map_Object_Type init_type,
 	                 const std::string& init_name,
 	                 const std::string& init_descname)
-	   : m_type(type), m_name(init_name), m_descname(init_descname) {
+		: m_type(init_type), m_name(init_name), m_descname(init_descname) {
 	}
 	virtual ~Map_Object_Descr() {m_anims.clear();}
 

=== modified file 'src/logic/production_program.cc'
--- src/logic/production_program.cc	2014-07-25 22:17:48 +0000
+++ src/logic/production_program.cc	2014-07-27 19:35:31 +0000
@@ -21,7 +21,6 @@
 
 #include <sstream>
 
-#include <boost/algorithm/string/join.hpp>
 #include <boost/format.hpp>
 
 #include "base/i18n.h"
@@ -140,33 +139,6 @@
 	return false;
 }
 
-// Helper structure for representing an iterator range in
-// for loops with constant iterators.
-// DEPRECATED!! do not use.
-// TODO(sirver): Replace the use of this with boost::algorithm::join() below.
-template<typename C>
-struct wl_const_range
-{
-	wl_const_range
-		(const typename  C::const_iterator & first,
-		 const typename C::const_iterator & last)
-		: current(first), end(last) {}
-	wl_const_range(const C & container) : current(container.begin()), end(container.end()) {}
-	wl_const_range(const wl_const_range & r) : current(r.current), end(r.end) {}
-	typename C::const_iterator current;
-	wl_const_range & operator++() {++current; return *this;}
-	wl_const_range<C> & advance() {++current; return *this;}
-	bool empty() const {return current == end;}
-	operator bool() const {return empty() ? false: true;}
-	typename C::const_reference front() const {return *current;}
-	typename C::const_reference operator*() const {return *current;}
-	typename C::const_pointer operator->() const {return (&**this);}
-	typename C::const_iterator get_end() {return end;}
-private:
-	typename C::const_iterator end;
-};
-
-
 
 }  // namespace
 
@@ -198,18 +170,23 @@
 			++parameters;
 		char const terminator = *parameters;
 		*parameters = '\0';
+
 		Ware_Index const ware_index = tribe.safe_ware_index(ware);
-		for (wl_const_range<BillOfMaterials> i(inputs);; ++i)
-			if (i.empty())
+
+		for (BillOfMaterials::const_iterator input_it = inputs.begin(); input_it != inputs.end(); ++input_it) {
+			if (input_it == inputs.end()) {
 				throw game_data_error
 					(
 					 "%s is not declared as an input (\"%s=<count>\" was not "
 					 "found in the [inputs] section)",
 					 ware, ware);
-			else if (i->first == ware_index) {
-				count_max += i.front().second;
+			}
+			else if (input_it->first == ware_index) {
+				count_max += input_it->second;
 				break;
 			}
+		}
+
 		if (group.first.size() && ware_index <= *group.first.begin())
 			throw game_data_error
 				(
@@ -264,11 +241,19 @@
 {
 	return !operand->evaluate(ps);
 }
+
+// Just a dummy to satisfy the superclass interface. Do not use.
 std::string ProductionProgram::ActReturn::Negation::description
 	(const Tribe_Descr & tribe) const
 {
-	/** TRANSLATORS: %s = e.g. 'economy needs ...' Context: 'and/or not %s' */
-	return (boost::format(_("not %s")) % operand->description(tribe)).str();
+	return (boost::format(("not %s")) % operand->description(tribe)).str();
+}
+
+// Just a dummy to satisfy the superclass interface. Do not use.
+std::string ProductionProgram::ActReturn::Negation::description_negation
+	(const Tribe_Descr & tribe) const
+{
+	return operand->description(tribe);
 }
 
 
@@ -280,8 +265,18 @@
 std::string ProductionProgram::ActReturn::Economy_Needs_Ware::description
 	(const Tribe_Descr & tribe) const
 {
-	/** TRANSLATORS: e.g. 'economy needs water' Context: 'and/or (not) economy needs %s' */
-	return (boost::format(_("economy needs %s")) % tribe.get_ware_descr(ware_type)->descname()).str();
+	// TODO(GunChleoc): We can make this more elegant if we add another definition to the conf files,
+	// so for "Log"; we will also have "logs" (numberless plural)
+	/** TRANSLATORS: e.g. Completed/Skipped/Did not start ... because the economy needs the ware ‘%s’*/
+	return (boost::format(_("the economy needs the ware ‘%s’"))
+			  % tribe.get_ware_descr(ware_type)->descname()).str();
+}
+std::string ProductionProgram::ActReturn::Economy_Needs_Ware::description_negation
+	(const Tribe_Descr & tribe) const
+{
+	/** TRANSLATORS: e.g. Completed/Skipped/Did not start ... because the economy doesn’t need the ware ‘%s’*/
+	return (boost::format(_("the economy doesn’t need the ware ‘%s’"))
+			  % tribe.get_ware_descr(ware_type)->descname()).str();
 }
 
 bool ProductionProgram::ActReturn::Economy_Needs_Worker::evaluate
@@ -292,9 +287,19 @@
 std::string ProductionProgram::ActReturn::Economy_Needs_Worker::description
 	(const Tribe_Descr & tribe) const
 {
-	/** TRANSLATORS: e.g. 'economy needs worker' Context: 'and/or (not) economy needs %s' */
-	return (boost::format(_("economy needs %s")) % tribe.get_ware_descr(worker_type)->descname()).str();
-}
+	/** TRANSLATORS: e.g. Completed/Skipped/Did not start ... because the economy needs the worker ‘%s’*/
+	return (boost::format(_("the economy needs the worker ‘%s’"))
+			  % tribe.get_ware_descr(worker_type)->descname()).str();
+}
+
+std::string ProductionProgram::ActReturn::Economy_Needs_Worker::description_negation
+	(const Tribe_Descr & tribe) const
+{
+	/** TRANSLATORS: e.g. Completed/Skipped/Did not start ... because the economy doesn’t need the worker ‘%s’*/
+	return (boost::format(_("the economy doesn’t need the worker ‘%s’"))
+			  % tribe.get_ware_descr(worker_type)->descname()).str();
+}
+
 
 ProductionProgram::ActReturn::Site_Has::Site_Has
 	(char * & parameters, const ProductionSite_Descr & descr)
@@ -320,25 +325,50 @@
 	}
 	return false;
 }
+
+// NOCOM rework this
 std::string ProductionProgram::ActReturn::Site_Has::description
 	(const Tribe_Descr & tribe) const
 {
-	std::string condition = "";
-	for (const Ware_Index& temp_ware : group.first) {
-		condition =
-		/** TRANSLATORS: Adds a ware to list of wares in 'Failed/Skipped ...' messages. */
-			(boost::format(_("%1$s %2$s")) % condition % tribe.get_ware_descr(temp_ware)->descname())
-			 .str();
-		/** TRANSLATORS: Separator for list of wares in 'Failed/Skipped ...' messages. */
-		condition = (boost::format(_("%s,")) % condition).str();
-	}
-	if (1 < group.second) {
-		// TODO(GunChleoc): this should be done with ngettext
-		condition =
-			(boost::format(_("%1$s (%2$i)")) % condition % static_cast<unsigned int>(group.second)).str();
-	}
-	/** TRANSLATORS: %s is a list of wares*/
-	std::string result = (boost::format(_("site has%s")) % condition).str();
+	std::vector<std::string> condition_list;
+	for (const Ware_Index& temp_ware : group.first) {
+		condition_list.push_back(tribe.get_ware_descr(temp_ware)->descname());
+	}
+	std::string condition = i18n::localize_item_list(condition_list, true);
+	if (1 < group.second) {
+		/** TRANSLATORS: This is an item in a list of wares, e.g. "3x water": */
+		/** TRANSLATORS:    %1$s = "3" */
+		/** TRANSLATORS:    %2$i = "water" */
+		condition = (boost::format(_("%1$ix %2$s"))
+						 % static_cast<unsigned int>(group.second)
+						 % condition).str();
+	}
+
+	/** TRANSLATORS: %s is a list of wares*/
+	std::string result = (boost::format(_("the building has the following wares: %s")) % condition).str();
+	return result;
+}
+
+std::string ProductionProgram::ActReturn::Site_Has::description_negation
+	(const Tribe_Descr & tribe) const
+{
+	std::vector<std::string> condition_list;
+	for (const Ware_Index& temp_ware : group.first) {
+		condition_list.push_back(tribe.get_ware_descr(temp_ware)->descname());
+	}
+	std::string condition = i18n::localize_item_list(condition_list, true);
+	if (1 < group.second) {
+		/** TRANSLATORS: This is an item in a list of wares, e.g. "3x water": */
+		/** TRANSLATORS:    %1$s = "3" */
+		/** TRANSLATORS:    %2$i = "water" */
+		condition = (boost::format(_("%1$ix %2$s"))
+						 % static_cast<unsigned int>(group.second)
+						 % condition).str();
+	}
+
+	/** TRANSLATORS: %s is a list of wares*/
+	std::string result = (boost::format(_("the building doesn’t have the following wares: %s"))
+								 % condition).str();
 	return result;
 }
 
@@ -354,8 +384,15 @@
 std::string ProductionProgram::ActReturn::Workers_Need_Experience::description
 	(const Tribe_Descr &) const
 {
-	/** TRANSLATORS: 'Failed/Skipped ... because: workers need experience'. */
-	return _("workers need experience");
+	/** TRANSLATORS: 'Completed/Skipped/Did not start ... because a worker needs experience'. */
+	return _("a worker needs experience");
+}
+
+std::string ProductionProgram::ActReturn::Workers_Need_Experience::description_negation
+	(const Tribe_Descr &) const
+{
+	/** TRANSLATORS: 'Completed/Skipped/Did not start ... because the workers need no experience'. */
+	return _("the workers need no experience");
 }
 
 
@@ -514,67 +551,52 @@
 void ProductionProgram::ActReturn::execute
 	(Game & game, ProductionSite & ps) const
 {
-	std::string statistics_string =
-		/** TRANSLATORS: 'Failed %s because (not): %s {and/or %s}' */
-		m_result == Failed    ? (boost::format(_("Failed %s")) % ps.top_state().program->descname()).str() :
-		/** TRANSLATORS: 'Completed %s because (not): %s {and/or %s}' */
-		m_result == Completed ? (boost::format(_("Completed %s")) % ps.top_state().program->descname()).str() :
-		/** TRANSLATORS: 'Skipped %s because (not): %s {and/or %s}' */
-					(boost::format(_("Skipped %s")) % ps.top_state().program->descname()).str();
-
 	if (!m_conditions.empty()) {
-		std::string result_string = statistics_string;
+		std::vector<std::string> condition_list;
 		if (m_is_when) { //  'when a and b and ...' (all conditions must be true)
-			std::string condition_string = "";
-			for (wl_const_range<Conditions> i(m_conditions); i;)
-			{
-				if (!(i.front()->evaluate(ps))) //  A condition is false,
+			for (const Condition * condition : m_conditions) {
+				if (!condition->evaluate(ps)) { //  A condition is false,
 					return ps.program_step(game); //  continue program.
-
-				condition_string += i.front()->description(ps.owner().tribe());
-				if (i.advance().empty())
-					break;
-				// TODO(GunChleoc):  Would prefer "%1$s and %2$s" but getting segfaults, so leaving this for now
-				/** TRANSLATORS: 'Failed/Completed/Skipped %s because: %s {and %s}' */
-				condition_string = (boost::format(_("%s and ")) % condition_string).str();
+				}
+				condition_list.push_back(condition->description(ps.owner().tribe()));
 			}
-			result_string =
-				/** TRANSLATORS: 'Failed/Completed/Skipped %s because: %s {and %s}' */
-				(boost::format(_("%1$s because: %2$s")) % statistics_string % condition_string).str();
 		} else { //  "unless a or b or ..." (all conditions must be false)
-			std::string condition_string = "";
-			for (wl_const_range<Conditions> i(m_conditions); i;)
-			{
-				if ((*i.current)->evaluate(ps)) //  A condition is true,
+			for (const Condition * condition : m_conditions) {
+				if (condition->evaluate(ps)) { //  A condition is true,
 					return ps.program_step(game); //  continue program.
-
-				condition_string += i.front()->description(ps.owner().tribe());
-				if (i.advance().empty())
-					break;
-				// TODO(GunChleoc):  Would prefer '%1$s or %2$s' but getting segfaults, so leaving this for now
-				/** TRANSLATORS: 'Failed/Completed/Skipped %s because not: %s {or %s}' */
-				condition_string = (boost::format(_("%s or ")) % condition_string).str();
+				}
+				condition_list.push_back(condition->description_negation(ps.owner().tribe()));
 			}
-			result_string =
-				/** TRANSLATORS: 'Failed/Completed/Skipped %s because not: %s {or %s}' */
-				(boost::format(_("%1$s because not: %2$s")) % statistics_string % condition_string).str();
-		}
+		}
+		std::string condition_string = i18n::localize_item_list(condition_list, true);
+
+		std::string result_string = "";
+		if (m_result == Failed) {
+			/** TRANSLATORS: "Did not start working because the economy needs the ware ‘%s’" */
+			result_string =  (boost::format(_("Did not start %1$s because %2$s"))
+									% ps.top_state().program->descname()
+									% condition_string)
+								  .str();
+		}
+		else if (m_result == Completed) {
+			/** TRANSLATORS: "Completed working because the economy needs the ware ‘%s’" */
+			result_string =  (boost::format(_("Completed %1$s because %2$s"))
+									% ps.top_state().program->descname()
+									% condition_string)
+								  .str();
+		}
+		else {
+			/** TRANSLATORS: "Skipped working because the economy needs the ware ‘%s’" */
+			result_string =  (boost::format(_("Skipped %1$s because %2$s"))
+									% ps.top_state().program->descname()
+									% condition_string)
+								  .str();
+		}
+
 		snprintf
 			(ps.m_result_buffer, sizeof(ps.m_result_buffer),
 			 "%s", result_string.c_str());
 	}
-	// Commented out, as the information is already given in the hover text and
-	// should *not* be shown in general statistics string, as:
-	// 1) the strings are that long, that they clutter the screen (especially
-	//    if you build up an "industry park" ;)
-	// 2) in many cases the "real" statistics (in percent) are nearly no more
-	//    shown, so the user has no idea if "skipped because .. is missing" is
-	//    an exception or the normal case at the moment.
-	/*
-	snprintf
-		(ps.m_statistics_buffer, sizeof(ps.m_statistics_buffer),
-		 "%s", statistics_string.c_str());
-	*/
 	return ps.program_end(game, m_result);
 }
 
@@ -902,46 +924,45 @@
 				++it;
 	}
 
+	// "Did not start working because .... is/are missing"
 	if (uint8_t const nr_missing_groups = l_groups.size()) {
 		const Tribe_Descr & tribe = ps.owner().tribe();
+
+		std::vector<std::string> group_list;
+		for (const Ware_Type_Group& group : l_groups) {
+			assert(group.first.size());
+
+			std::vector<std::string> ware_list;
+			for (const Ware_Index& ware : group.first) {
+				ware_list.push_back(tribe.get_ware_descr(ware)->descname());
+			}
+			std::string ware_string = i18n::localize_item_list(ware_list, false);
+
+			uint8_t const count = group.second;
+			if (1 < count) {
+				ware_string =
+					/** TRANSLATORS: e.g. 'Did not start working because 3x water and 3x wheat are missing' */
+					/** TRANSLATORS: For this example, this is what's in the place holders: */
+					/** TRANSLATORS:    %1$s = "3" */
+					/** TRANSLATORS:    %2$i = "water" */
+					(boost::format(_("%1$ix %2$s"))
+					 % static_cast<unsigned int>(count)
+					 % ware_string)
+					 .str();
+			}
+			group_list.push_back(ware_string);
+		}
+
 		std::string result_string =
-			/** TRANSLATORS: e.g. 'Failed work because: water, wheat (2) are missing' */
-			(boost::format(_("Failed %s because:")) % ps.top_state().program->descname()).str();
-
-		for (wl_const_range<Groups> i(l_groups); i;)
-		{
-			assert(i.current->first.size());
-			for (wl_const_range<std::set<Ware_Index> > j(i.current->first); j;)
-			{
-				result_string =
-					/** TRANSLATORS: Adds a ware to list of wares in 'Failed/Skipped ...' messages. */
-					(boost::format(_("%1$s %2$s")) % result_string
-					 % tribe.get_ware_descr(j.front())->descname())
-					 .str();
-				if (j.advance().empty())
-					break;
-				/** TRANSLATORS: Separator for list of wares in 'Failed/Skipped ...' messages. */
-				result_string = (boost::format(_("%s,")) % result_string).str();
-			}
-			{
-				uint8_t const count = i.current->second;
-				if (1 < count) {
-					// TODO(GunChleoc): this should be done with ngettext
-					result_string =
-						/** TRANSLATORS: e.g. 'Failed work because: water, wheat (2) are missing' */
-						(boost::format(_("%1$s (%2$i)")) % result_string
-						 % static_cast<unsigned int>(count))
-						 .str();
-				}
-			}
-			if (i.advance().empty())
-				break;
-			result_string = (boost::format(_("%s and")) % result_string).str();
-		}
-		result_string =
-			/** TRANSLATORS: e.g. %1$s = 'Failed work because: water, wheat (2)' %2$s = 'are missing' */
-			(boost::format(_("%1$s %2$s")) % result_string
-			/** TRANSLATORS: e.g. 'Failed work because: water, wheat (2) are missing' */
+			/** TRANSLATORS: e.g. 'Did not start working because 3x water and 3x wheat are missing' */
+			/** TRANSLATORS: For this example, this is what's in the place holders: */
+			/** TRANSLATORS:    %1$s = "work" */
+			/** TRANSLATORS:    %2$s = "water and wheat (2) " */
+			/** TRANSLATORS:    %3$s = "are missing" */
+			(boost::format(_("Did not start %1$s because %2$s %3$s"))
+			 % ps.top_state().program->descname()
+			 % i18n::localize_item_list(group_list, true)
+			/** TRANSLATORS: e.g. 'Did not start working because 3x water and 3x wheat are missing' */
 			 % ngettext(" is missing", " are missing", nr_missing_groups))
 			 .str();
 
@@ -1043,8 +1064,7 @@
 		ware_descname += tribe.get_ware_descr(item_pair.first)->descname();
 		ware_descnames.push_back(ware_descname);
 	}
-	/** TRANSLATORS: Separator for list of wares */
-	const std::string ware_list = boost::algorithm::join(ware_descnames,  _(", "));
+	std::string ware_list = i18n::localize_item_list(ware_descnames, true);
 
 	// Keep translateability in mind!
 	/** TRANSLATORS: %s is a list of wares */
@@ -1132,6 +1152,7 @@
 		uint8_t const count = item_pair.second;
 		std::string worker_descname;
 		// TODO(sirver): needs boost::format and probably ngettext.
+		// TODO(GunChleoc): use ngettext when we have one_tribe.
 		if (1 < count) {
 			char buffer[5];
 			/** TRANSLATORS: Number used in list of workers */
@@ -1141,10 +1162,9 @@
 		worker_descname += tribe.get_worker_descr(item_pair.first)->descname();
 		worker_descnames.push_back(worker_descname);
 	}
-	/** TRANSLATORS: Separator for list of workers */
-	const std::string unit_string = boost::algorithm::join(worker_descnames,  _(", "));
+	std::string unit_string = i18n::localize_item_list(worker_descnames, true);
 
-	/** TRANSLATORS: %s is a lost of workers */
+	/** TRANSLATORS: %s is a list of workers */
 	std::string result_string = (boost::format(_("Recruited %s")) % unit_string).str();
 	snprintf
 		(ps.m_result_buffer, sizeof(ps.m_result_buffer),

=== modified file 'src/logic/production_program.h'
--- src/logic/production_program.h	2014-07-26 10:43:23 +0000
+++ src/logic/production_program.h	2014-07-27 19:35:31 +0000
@@ -143,8 +143,8 @@
 		struct Condition {
 			virtual ~Condition();
 			virtual bool evaluate(const ProductionSite &) const = 0;
-			virtual std::string description(const Tribe_Descr &) const
-				= 0;
+			virtual std::string description(const Tribe_Descr &) const = 0;
+			virtual std::string description_negation(const Tribe_Descr &) const = 0;
 		};
 		static Condition * create_condition
 			(char * & parameters, const ProductionSite_Descr &);
@@ -155,7 +155,10 @@
 			{}
 			virtual ~Negation();
 			bool evaluate(const ProductionSite &) const override;
+			// Just a dummy to satisfy the superclass interface. Do not use.
 			std::string description(const Tribe_Descr &) const override;
+			// Just a dummy to satisfy the superclass interface. Do not use.
+			std::string description_negation(const Tribe_Descr &) const override;
 		private:
 			Condition * const operand;
 		};
@@ -165,6 +168,7 @@
 			Economy_Needs_Ware(const Ware_Index& i) : ware_type(i) {}
 			bool evaluate(const ProductionSite &) const override;
 			std::string description(const Tribe_Descr &) const override;
+			std::string description_negation(const Tribe_Descr &) const override;
 		private:
 			Ware_Index ware_type;
 		};
@@ -174,6 +178,7 @@
 			Economy_Needs_Worker(const Ware_Index& i) : worker_type(i) {}
 			bool evaluate(const ProductionSite &) const override;
 			std::string description(const Tribe_Descr &) const override;
+			std::string description_negation(const Tribe_Descr &) const override;
 		private:
 			Ware_Index worker_type;
 		};
@@ -185,6 +190,7 @@
 			Site_Has(char * & parameters, const ProductionSite_Descr &);
 			bool evaluate(const ProductionSite &) const override;
 			std::string description(const Tribe_Descr &) const override;
+			std::string description_negation(const Tribe_Descr &) const override;
 		private:
 			Ware_Type_Group group;
 		};
@@ -194,6 +200,7 @@
 		struct Workers_Need_Experience : public Condition {
 			bool evaluate(const ProductionSite &) const override;
 			std::string description(const Tribe_Descr &) const override;
+			std::string description_negation(const Tribe_Descr &) const override;
 		};
 
 		typedef std::vector<Condition *> Conditions;

=== modified file 'src/logic/productionsite.cc'
--- src/logic/productionsite.cc	2014-07-26 09:48:21 +0000
+++ src/logic/productionsite.cc	2014-07-27 19:35:31 +0000
@@ -54,11 +54,11 @@
 */
 
 ProductionSite_Descr::ProductionSite_Descr
-	(Map_Object_Type type, char const * const _name, char const * const _descname,
+	(Map_Object_Type _type, char const * const _name, char const * const _descname,
 	 const std::string & directory, Profile & prof, Section & global_s,
 	 const Tribe_Descr & _tribe, const World& world)
 	:
-	Building_Descr(type, _name, _descname, directory, prof, global_s, _tribe)
+	Building_Descr(_type, _name, _descname, directory, prof, global_s, _tribe)
 {
 	Section * const section = prof.get_section("out_of_resource_notification");
 	if (section != nullptr)

=== modified file 'src/wui/encyclopedia_window.cc'
--- src/wui/encyclopedia_window.cc	2014-07-25 22:17:48 +0000
+++ src/wui/encyclopedia_window.cc	2014-07-27 19:35:31 +0000
@@ -27,8 +27,6 @@
 #include <typeinfo>
 #include <vector>
 
-#include <boost/algorithm/string/join.hpp>
-
 #include "base/i18n.h"
 #include "base/macros.h"
 #include "economy/economy.h"
@@ -187,9 +185,8 @@
 						ware_type_descnames.push_back(tribe.get_ware_descr(ware_index)->descname());
 					}
 
-					const std::string ware_type_names =
-					/** TRANSLATORS: List of wares, e.g. "Fish or Meat" */
-					   boost::algorithm::join(ware_type_descnames, _(" or "));
+					// NOCOM use localise_item_list from production_program
+					std::string ware_type_names = i18n::localize_item_list(ware_type_descnames, false);
 
 					//  Make sure to detect if someone changes the type so that it
 					//  needs more than 3 decimal digits to represent.

=== modified file 'tribes/atlanteans/armorsmithy/conf'
--- tribes/atlanteans/armorsmithy/conf	2014-05-27 14:14:14 +0000
+++ tribes/atlanteans/armorsmithy/conf	2014-07-27 19:35:31 +0000
@@ -25,9 +25,12 @@
 coal=8
 
 [programs]
-produce_steel_shield=_Produce steel shield
-produce_advanced_shield=_Produce advanced shield
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start forging a steel shield because ...
+produce_steel_shield=_forging a steel shield
+# TRANSLATORS: "Completed/Skipped/Did not start forging an advanced shield because ...
+produce_advanced_shield=_forging an advanced shield
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_steel_shield]
 return=skipped unless economy needs steel_shield

=== modified file 'tribes/atlanteans/bakery/conf'
--- tribes/atlanteans/bakery/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/bakery/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 water=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=35000

=== modified file 'tribes/atlanteans/blackroot_farm/conf'
--- tribes/atlanteans/blackroot_farm/conf	2014-07-22 12:29:17 +0000
+++ tribes/atlanteans/blackroot_farm/conf	2014-07-27 19:35:31 +0000
@@ -19,9 +19,12 @@
 blackroot_farmer=1
 
 [programs]
-plant_blackroot=_Plant blackroot
-harvest_blackroot=_Harvest blackroot
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting blackroot because ...
+plant_blackroot=_planting blackroot
+# TRANSLATORS: "Completed/Skipped/Did not start harvesting blackroot because ...
+harvest_blackroot=_harvesting blackroot
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [plant_blackroot]
 sleep=20000

=== modified file 'tribes/atlanteans/burners_house/conf'
--- tribes/atlanteans/burners_house/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/burners_house/conf	2014-07-27 19:35:31 +0000
@@ -20,7 +20,8 @@
 log=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=30000

=== modified file 'tribes/atlanteans/coalmine/conf'
--- tribes/atlanteans/coalmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/coalmine/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 smoked_meat=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/atlanteans/crystalmine/conf'
--- tribes/atlanteans/crystalmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/crystalmine/conf	2014-07-27 19:35:31 +0000
@@ -24,10 +24,14 @@
 smoked_meat=6
 
 [programs]
-mine_stone=_Mine stone
-mine_quartz=_Mine quartz
-mine_diamond=_Mine diamond
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining stone because ...
+mine_stone=_mining stone
+# TRANSLATORS: "Completed/Skipped/Did not start mining quartz because ...
+mine_quartz=_mining quartz
+# TRANSLATORS: "Completed/Skipped/Did not start mining diamonds because ...
+mine_diamond=_mining diamonds
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [mine_stone]
 return=skipped unless economy needs stone or not economy needs bread

=== modified file 'tribes/atlanteans/farm/conf'
--- tribes/atlanteans/farm/conf	2014-07-22 12:29:17 +0000
+++ tribes/atlanteans/farm/conf	2014-07-27 19:35:31 +0000
@@ -21,9 +21,12 @@
               # corn for production -> farm should be build ASAP!
 
 [programs]
-plant_corn=_Plant corn
-harvest_corn=_Harvest corn
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting corn because ...
+plant_corn=_planting corn
+# TRANSLATORS: "Completed/Skipped/Did not start harvesting corn because ...
+harvest_corn=_harvesting corn
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [plant_corn]
 sleep=14000  #orig 20000

=== modified file 'tribes/atlanteans/fish_breeders_house/conf'
--- tribes/atlanteans/fish_breeders_house/conf	2014-05-27 14:14:14 +0000
+++ tribes/atlanteans/fish_breeders_house/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 renews_map_resource=fish
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=24000

=== modified file 'tribes/atlanteans/fishers_house/conf'
--- tribes/atlanteans/fishers_house/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/fishers_house/conf	2014-07-27 19:35:31 +0000
@@ -16,7 +16,8 @@
 needs_water=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start fishing because ...
+work=_fishing
 
 [work]
 sleep=16000

=== modified file 'tribes/atlanteans/foresters_house/conf'
--- tribes/atlanteans/foresters_house/conf	2014-05-27 14:14:14 +0000
+++ tribes/atlanteans/foresters_house/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 renews_map_resource=log
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting trees because ...
+work=_planting trees
 
 [work]
 sleep=11000

=== modified file 'tribes/atlanteans/gold-spinning-mill/conf'
--- tribes/atlanteans/gold-spinning-mill/conf	2014-07-15 05:12:37 +0000
+++ tribes/atlanteans/gold-spinning-mill/conf	2014-07-27 19:35:31 +0000
@@ -20,7 +20,8 @@
 gold=5
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=15000

=== modified file 'tribes/atlanteans/goldmine/conf'
--- tribes/atlanteans/goldmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/goldmine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 smoked_meat=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/atlanteans/horsefarm/conf'
--- tribes/atlanteans/horsefarm/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/horsefarm/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 water=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start breeding horses because ...
+work=_breeding horses
 
 [work]
 sleep=15000

=== modified file 'tribes/atlanteans/hunters_house/conf'
--- tribes/atlanteans/hunters_house/conf	2014-07-20 21:23:10 +0000
+++ tribes/atlanteans/hunters_house/conf	2014-07-27 19:35:31 +0000
@@ -16,7 +16,8 @@
 hunter=1
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start hunting because ...
+work=_hunting
 
 [work]
 sleep=35000

=== modified file 'tribes/atlanteans/ironmine/conf'
--- tribes/atlanteans/ironmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/ironmine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 smoked_meat=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/atlanteans/labyrinth/conf'
--- tribes/atlanteans/labyrinth/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/labyrinth/conf	2014-07-27 19:35:31 +0000
@@ -42,12 +42,18 @@
 max_level=1
 
 [programs]
-sleep=_Sleep
-upgrade_soldier_defense_0=_Upgrade soldier defense from level 0 to level 1
-upgrade_soldier_defense_1=_Upgrade soldier defense from level 1 to level 2
-upgrade_soldier_hp_0=_Upgrade soldier health from level 0 to level 1
-upgrade_soldier_evade_0=_Upgrade soldier evade from level 0 to level 1
-upgrade_soldier_evade_1=_Upgrade soldier evade from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start sleeping because ...
+sleep=_sleeping
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_defense_0=_upgrading soldier defense from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_defense_1=_upgrading soldier defense from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_hp_0=_upgrading soldier health from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_evade_0=_upgrading soldier evade from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_evade_1=_upgrading soldier evade from level 1 to level 2
 
 [sleep]
 sleep=5000

=== modified file 'tribes/atlanteans/mill/conf'
--- tribes/atlanteans/mill/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/mill/conf	2014-07-27 19:35:31 +0000
@@ -23,9 +23,12 @@
 blackroot=6
 
 [programs]
-produce_cornflour=_Produce cornflour
-produce_blackrootflour=_Produce blackrootflour
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start grinding corn because ...
+produce_cornflour=_grinding corn
+# TRANSLATORS: "Completed/Skipped/Did not start grinding blackroot because ...
+produce_blackrootflour=_grinding blackroot
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_cornflour]
 return=skipped when site has blackroot and economy needs blackrootflour and not economy needs cornflour

=== modified file 'tribes/atlanteans/quarry/conf'
--- tribes/atlanteans/quarry/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/quarry/conf	2014-07-27 19:35:31 +0000
@@ -16,7 +16,8 @@
 stoneproducer=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 worker=cut_stone  # This order is on purpose so that the productivity

=== modified file 'tribes/atlanteans/sawmill/conf'
--- tribes/atlanteans/sawmill/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/sawmill/conf	2014-07-27 19:35:31 +0000
@@ -19,7 +19,8 @@
 log=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=16500 # much faster than barbarians hardener

=== modified file 'tribes/atlanteans/scouts_house/conf'
--- tribes/atlanteans/scouts_house/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/scouts_house/conf	2014-07-27 19:35:31 +0000
@@ -18,7 +18,8 @@
 build_material=false
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start scouting because ...
+work=_scouting
 
 [work]
 sleep=30000

=== modified file 'tribes/atlanteans/shipyard/conf'
--- tribes/atlanteans/shipyard/conf	2014-03-17 17:23:26 +0000
+++ tribes/atlanteans/shipyard/conf	2014-07-27 19:35:31 +0000
@@ -25,8 +25,10 @@
 spidercloth=4
 
 [programs]
-ship=_Constructing ship
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start constructing a ship because ...
+ship=_constructing a ship
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=20000

=== modified file 'tribes/atlanteans/smelting_works/conf'
--- tribes/atlanteans/smelting_works/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/smelting_works/conf	2014-07-27 19:35:31 +0000
@@ -23,9 +23,12 @@
 coal=8
 
 [programs]
-smelt_iron=_Smelt iron
-smelt_gold=_Smelt gold
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start smelting iron because ...
+smelt_iron=_smelting iron
+# TRANSLATORS: "Completed/Skipped/Did not start smelting gold because ...
+smelt_gold=_smelting gold
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [smelt_iron]
 return=skipped unless economy needs iron

=== modified file 'tribes/atlanteans/smokery/conf'
--- tribes/atlanteans/smokery/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/smokery/conf	2014-07-27 19:35:31 +0000
@@ -26,9 +26,12 @@
 log=8
 
 [programs]
-smoke_meat=_Smoke meat
-smoke_fish=_Smoke fish
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start smoking meat because ...
+smoke_meat=_smoking meat
+# TRANSLATORS: "Completed/Skipped/Did not start smoking fish because ...
+smoke_fish=_smoking fish
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [smoke_meat]
 return=skipped unless economy needs smoked_meat or not economy needs log

=== modified file 'tribes/atlanteans/spiderfarm/conf'
--- tribes/atlanteans/spiderfarm/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/spiderfarm/conf	2014-07-27 19:35:31 +0000
@@ -18,7 +18,8 @@
 water=7
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=25000

=== modified file 'tribes/atlanteans/toolsmithy/conf'
--- tribes/atlanteans/toolsmithy/conf	2014-07-15 10:02:22 +0000
+++ tribes/atlanteans/toolsmithy/conf	2014-07-27 19:35:31 +0000
@@ -35,19 +35,32 @@
 spidercloth=4
 
 [programs]
-produce_bread_paddle=_Produce bread paddle
-produce_bucket=_Produce bucket
-produce_fire_tongs=_Produce fire tongs
-produce_fishing_net=_Produce fishing net
-produce_hammer=_Produce hammer
-produce_hook_pole=_Produce hook pole
-produce_hunting_bow=_Produce bow
-produce_milking_tongs=_Produce milking tongs
-produce_pick=_Produce pick
-produce_saw=_Produce saw
-produce_scythe=_Produce scythe
-produce_shovel=_Produce shovel
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start making a bread paddle because ...
+produce_bread_paddle=_making a bread paddle
+# TRANSLATORS: "Completed/Skipped/Did not start making a bucket because ...
+produce_bucket=_making a bucket
+# TRANSLATORS: "Completed/Skipped/Did not start making fire tongs because ...
+produce_fire_tongs=making fire tongs
+# TRANSLATORS: "Completed/Skipped/Did not start making a fishing net because ...
+produce_fishing_net=_making a fishing net
+# TRANSLATORS: "Completed/Skipped/Did not start making a hammer because ...
+produce_hammer=_making a hammer
+# TRANSLATORS: "Completed/Skipped/Did not start making a hook pole because ...
+produce_hook_pole=_making a hook pole
+# TRANSLATORS: "Completed/Skipped/Did not start making a bow because ...
+produce_hunting_bow=_making a bow
+# TRANSLATORS: "Completed/Skipped/Did not start making milking tongs because ...
+produce_milking_tongs=_making milking tongs
+# TRANSLATORS: "Completed/Skipped/Did not start making a pick because ...
+produce_pick=_making a pick
+# TRANSLATORS: "Completed/Skipped/Did not start making a saw because ...
+produce_saw=_making a saw
+# TRANSLATORS: "Completed/Skipped/Did not start making a scythe because ...
+produce_scythe=_making a scythe
+# TRANSLATORS: "Completed/Skipped/Did not start making a shovel because ...
+produce_shovel=_making a shovel
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_bread_paddle]
 return=skipped unless economy needs bread_paddle

=== modified file 'tribes/atlanteans/weaponsmithy/conf'
--- tribes/atlanteans/weaponsmithy/conf	2014-07-15 10:02:22 +0000
+++ tribes/atlanteans/weaponsmithy/conf	2014-07-27 19:35:31 +0000
@@ -30,12 +30,18 @@
 planks=8
 
 [programs]
-produce_light_trident=_Produce light trident
-produce_long_trident=_Produce long trident
-produce_steel_trident=_Produce steel trident
-produce_double_trident=_Produce double trident
-produce_heavy_double_trident=_Produce heavy double trident
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start forging a light triden because ...
+produce_light_trident=_forging a light trident
+# TRANSLATORS: "Completed/Skipped/Did not start forging a long trident because ...
+produce_long_trident=_forging a long trident
+# TRANSLATORS: "Completed/Skipped/Did not start forging a steel trident because ...
+produce_steel_trident=_forging a steel trident
+# TRANSLATORS: "Completed/Skipped/Did not start forging a double trident because ...
+produce_double_trident=_forging a double trident
+# TRANSLATORS: "Completed/Skipped/Did not start forging a heavy double trident because ...
+produce_heavy_double_trident=_forging a heavy double trident
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_light_trident]
 return=skipped unless economy needs light_trident

=== modified file 'tribes/atlanteans/weaving-mill/conf'
--- tribes/atlanteans/weaving-mill/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/weaving-mill/conf	2014-07-27 19:35:31 +0000
@@ -21,10 +21,14 @@
 goldyarn=4
 
 [programs]
-produce_spidercloth=_Produce spidercloth
-produce_tabard=_Produce tabard
-produce_golden_tabard=_Produce golden tabard
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start weaving spidercloth because ...
+produce_spidercloth=_weaving spidercloth
+# TRANSLATORS: "Completed/Skipped/Did not start tailoring a tabard because ...
+produce_tabard=_tailoring a tabard
+# TRANSLATORS: "Completed/Skipped/Did not start tailoring a golden tabard because ...
+produce_golden_tabard=_tailoring a golden tabard
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_spidercloth]
 return=skipped unless economy needs spidercloth

=== modified file 'tribes/atlanteans/well/conf'
--- tribes/atlanteans/well/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/well/conf	2014-07-27 19:35:31 +0000
@@ -14,7 +14,8 @@
 carrier=1
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=20000

=== modified file 'tribes/atlanteans/woodcutters_house/conf'
--- tribes/atlanteans/woodcutters_house/conf	2014-07-21 09:30:12 +0000
+++ tribes/atlanteans/woodcutters_house/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 logproducer=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=30000 # Barbarian lumberjack sleeps 25000

=== modified file 'tribes/barbarians/axfactory/conf'
--- tribes/barbarians/axfactory/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/axfactory/conf	2014-07-27 19:35:31 +0000
@@ -29,10 +29,14 @@
 coal=8
 
 [programs]
-produce_ax=_Produce ax
-produce_sharpax=_Produce sharp ax
-produce_broadax=_Produce broad ax
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start forging an ax because ...
+produce_ax=_forging an ax
+# TRANSLATORS: "Completed/Skipped/Did not start forging a sharp ax because ...
+produce_sharpax=_forging a sharp ax
+# TRANSLATORS: "Completed/Skipped/Did not start forging a broad ax because ...
+produce_broadax=_forging a broad ax
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_ax]
 return=skipped unless economy needs ax

=== modified file 'tribes/barbarians/bakery/conf'
--- tribes/barbarians/bakery/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/bakery/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 water=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=20000

=== modified file 'tribes/barbarians/battlearena/conf'
--- tribes/barbarians/battlearena/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/battlearena/conf	2014-07-27 19:35:31 +0000
@@ -30,9 +30,12 @@
 max_level=1
 
 [programs]
-sleep=_Sleep
-upgrade_soldier_evade_0=_Upgrade soldier evade from level 0 to level 1
-upgrade_soldier_evade_1=_Upgrade soldier evade from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start sleeping because ...
+sleep=_sleeping
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_evade_0=_upgrading soldier evade from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_evade_1=_upgrading soldier evade from level 1 to level 2
 
 [sleep]
 sleep=5000

=== modified file 'tribes/barbarians/big_inn/conf'
--- tribes/barbarians/big_inn/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/big_inn/conf	2014-07-27 19:35:31 +0000
@@ -24,10 +24,14 @@
 beer=4
 
 [programs]
-produce_ration=_Produce ration
-produce_snack=_Produce snack
-produce_meal=_Produce meal
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a ration because ...
+produce_ration=_preparing a ration
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a snack because ...
+produce_snack=_preparing a snack
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a meal because ...
+produce_meal=_preparing a meal
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_ration]
 return=skipped unless economy needs ration

=== modified file 'tribes/barbarians/brewery/conf'
--- tribes/barbarians/brewery/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/brewery/conf	2014-07-27 19:35:31 +0000
@@ -21,7 +21,8 @@
 wheat=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start brewing because ...
+work=_brewing
 
 [work]
 sleep=30000

=== modified file 'tribes/barbarians/burners_house/conf'
--- tribes/barbarians/burners_house/conf	2014-07-15 10:02:22 +0000
+++ tribes/barbarians/burners_house/conf	2014-07-27 19:35:31 +0000
@@ -20,7 +20,8 @@
 log=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=30000

=== modified file 'tribes/barbarians/cattlefarm/conf'
--- tribes/barbarians/cattlefarm/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/cattlefarm/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 water=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start rearing cattle because ...
+work=_rearing cattle
 
 [work]
 sleep=15000

=== modified file 'tribes/barbarians/coalmine/conf'
--- tribes/barbarians/coalmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/coalmine/conf	2014-07-27 19:35:31 +0000
@@ -21,7 +21,8 @@
 ration=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/barbarians/deep_coalmine/conf'
--- tribes/barbarians/deep_coalmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/deep_coalmine/conf	2014-07-27 19:35:31 +0000
@@ -24,7 +24,8 @@
 snack=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=42000

=== modified file 'tribes/barbarians/deep_goldmine/conf'
--- tribes/barbarians/deep_goldmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/deep_goldmine/conf	2014-07-27 19:35:31 +0000
@@ -24,7 +24,8 @@
 snack=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=42000

=== modified file 'tribes/barbarians/deep_oremine/conf'
--- tribes/barbarians/deep_oremine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/deep_oremine/conf	2014-07-27 19:35:31 +0000
@@ -24,7 +24,9 @@
 snack=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
+
 
 [work]
 sleep=43000

=== modified file 'tribes/barbarians/deeper_coalmine/conf'
--- tribes/barbarians/deeper_coalmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/deeper_coalmine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 meal=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=40000

=== modified file 'tribes/barbarians/deeper_goldmine/conf'
--- tribes/barbarians/deeper_goldmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/deeper_goldmine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 meal=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=40000

=== modified file 'tribes/barbarians/deeper_oremine/conf'
--- tribes/barbarians/deeper_oremine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/deeper_oremine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 meal=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=40000

=== modified file 'tribes/barbarians/farm/conf'
--- tribes/barbarians/farm/conf	2014-07-22 12:29:17 +0000
+++ tribes/barbarians/farm/conf	2014-07-27 19:35:31 +0000
@@ -18,9 +18,12 @@
 farmer=1
 
 [programs]
-plant_wheat=_Plant wheat
-harvest_wheat=_Harvest wheat
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting wheat because ...
+plant_wheat=_planting wheat
+# TRANSLATORS: "Completed/Skipped/Did not start harvesting wheat because ...
+harvest_wheat=_harvesting wheat
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [plant_wheat]
 sleep=14000  #orig 20000

=== modified file 'tribes/barbarians/fishers_hut/conf'
--- tribes/barbarians/fishers_hut/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/fishers_hut/conf	2014-07-27 19:35:31 +0000
@@ -15,7 +15,8 @@
 needs_water=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start fishing because ...
+work=_fishing
 
 [work]
 sleep=18000

=== modified file 'tribes/barbarians/gamekeepers_hut/conf'
--- tribes/barbarians/gamekeepers_hut/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/gamekeepers_hut/conf	2014-07-27 19:35:31 +0000
@@ -16,7 +16,8 @@
 renews_map_resource=meat
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=52500

=== modified file 'tribes/barbarians/goldmine/conf'
--- tribes/barbarians/goldmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/goldmine/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 ration=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/barbarians/granitemine/conf'
--- tribes/barbarians/granitemine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/granitemine/conf	2014-07-27 19:35:31 +0000
@@ -19,7 +19,8 @@
 ration=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=20000

=== modified file 'tribes/barbarians/hardener/conf'
--- tribes/barbarians/hardener/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/hardener/conf	2014-07-27 19:35:31 +0000
@@ -19,7 +19,8 @@
 log=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=43000

=== modified file 'tribes/barbarians/helmsmithy/conf'
--- tribes/barbarians/helmsmithy/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/helmsmithy/conf	2014-07-27 19:35:31 +0000
@@ -28,10 +28,14 @@
 coal=8
 
 [programs]
-produce_helm=_Produce helm
-produce_mask=_Produce mask
-produce_warhelm=_Produce warhelm
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start forging a helm because ...
+produce_helm=_forging a helm
+# TRANSLATORS: "Completed/Skipped/Did not start forging a mask because ...
+produce_mask=_forging a mask
+# TRANSLATORS: "Completed/Skipped/Did not start forging a warhelm because ...
+produce_warhelm=_forging a warhelm
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_helm]
 return=skipped unless economy needs helm

=== modified file 'tribes/barbarians/hunters_hut/conf'
--- tribes/barbarians/hunters_hut/conf	2014-07-20 21:23:10 +0000
+++ tribes/barbarians/hunters_hut/conf	2014-07-27 19:35:31 +0000
@@ -16,7 +16,8 @@
 hunter=1
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start hunting because ...
+work=_hunting
 
 [work]
 sleep=35000

=== modified file 'tribes/barbarians/inn/conf'
--- tribes/barbarians/inn/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/inn/conf	2014-07-27 19:35:31 +0000
@@ -24,9 +24,12 @@
 beer=4
 
 [programs]
-produce_ration=_Produce ration
-produce_snack=_Produce snack
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a ration because ...
+produce_ration=_preparing a ration
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a snack because ...
+produce_snack=_preparing a snack
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_ration]
 return=skipped unless economy needs ration

=== modified file 'tribes/barbarians/lime_kiln/conf'
--- tribes/barbarians/lime_kiln/conf	2014-07-15 10:02:22 +0000
+++ tribes/barbarians/lime_kiln/conf	2014-07-27 19:35:31 +0000
@@ -19,7 +19,8 @@
 coal=3
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=50000

=== modified file 'tribes/barbarians/lumberjacks_hut/conf'
--- tribes/barbarians/lumberjacks_hut/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/lumberjacks_hut/conf	2014-07-27 19:35:31 +0000
@@ -15,7 +15,8 @@
 logproducer=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=25000 # sleeps shorter than any other tribes

=== modified file 'tribes/barbarians/metalworks/conf'
--- tribes/barbarians/metalworks/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/metalworks/conf	2014-07-27 19:35:31 +0000
@@ -35,17 +35,28 @@
 is_basic=true
 
 [programs]
-produce_felling_ax=_Produce felling ax
-produce_bread_paddle=_Produce bread paddle
-produce_fire_tongs=_Produce fire tongs
-produce_fishing_rod=_Produce fishing rod
-produce_hammer=_Produce hammer
-produce_kitchen_tools=_Produce kitchen tools
-produce_pick=_Produce pick
-produce_scythe=_Produce scythe
-produce_shovel=_Produce shovel
-produce_hunting_spear=_Produce hunting spear
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start making a felling ax because ...
+produce_felling_ax=_making a felling ax
+# TRANSLATORS: "Completed/Skipped/Did not start making a bread paddle because ...
+produce_bread_paddle=_making a bread paddle
+# TRANSLATORS: "Completed/Skipped/Did not start making fire tongs because ...
+produce_fire_tongs=_making fire tongs
+# TRANSLATORS: "Completed/Skipped/Did not start making a fishing rod because ...
+produce_fishing_rod=_making a fishing rod
+# TRANSLATORS: "Completed/Skipped/Did not start making a hammer because ...
+produce_hammer=_making a hammer
+# TRANSLATORS: "Completed/Skipped/Did not start making kitchen tools because ...
+produce_kitchen_tools=_making kitchen tools
+# TRANSLATORS: "Completed/Skipped/Did not start making a pick because ...
+produce_pick=_making a pick
+# TRANSLATORS: "Completed/Skipped/Did not start making a scythe because ...
+produce_scythe=_making a scythe
+# TRANSLATORS: "Completed/Skipped/Did not start making a shovel because ...
+produce_shovel=_making a shovel
+# TRANSLATORS: "Completed/Skipped/Did not start making a hunting spear because ...
+produce_hunting_spear=_making a hunting spear
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_felling_ax]
 return=skipped unless economy needs felling_ax

=== modified file 'tribes/barbarians/micro-brewery/conf'
--- tribes/barbarians/micro-brewery/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/micro-brewery/conf	2014-07-27 19:35:31 +0000
@@ -24,7 +24,8 @@
 wheat=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start brewing because ...
+work=_brewing
 
 [work]
 sleep=30000

=== modified file 'tribes/barbarians/oremine/conf'
--- tribes/barbarians/oremine/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/oremine/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 ration=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/barbarians/quarry/conf'
--- tribes/barbarians/quarry/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/quarry/conf	2014-07-27 19:35:31 +0000
@@ -15,7 +15,8 @@
 stoneproducer=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 worker=cut   # This order is on purpose so that the productivity

=== modified file 'tribes/barbarians/rangers_hut/conf'
--- tribes/barbarians/rangers_hut/conf	2014-05-25 17:43:56 +0000
+++ tribes/barbarians/rangers_hut/conf	2014-07-27 19:35:31 +0000
@@ -14,7 +14,8 @@
 space_consumer=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting trees because ...
+work=_planting trees
 
 [work]
 sleep=16000

=== modified file 'tribes/barbarians/reed_yard/conf'
--- tribes/barbarians/reed_yard/conf	2014-07-22 12:29:17 +0000
+++ tribes/barbarians/reed_yard/conf	2014-07-27 19:35:31 +0000
@@ -16,9 +16,12 @@
 gardener=1
 
 [programs]
-plant_reed=_Plant reed
-harvest_reed=_Harvest reed
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting reed because ...
+plant_reed=_planting reed
+# TRANSLATORS: "Completed/Skipped/Did not start harvesting reed because ...
+harvest_reed=_harvesting reed
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [plant_reed]
 sleep=18000  #orig sleep=20000 but gardener animation was increased by 2sec

=== modified file 'tribes/barbarians/scouts_hut/conf'
--- tribes/barbarians/scouts_hut/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/scouts_hut/conf	2014-07-27 19:35:31 +0000
@@ -18,7 +18,8 @@
 scout=1
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start scouting because ...
+work=_scouting
 
 [work]
 sleep=30000

=== modified file 'tribes/barbarians/shipyard/conf'
--- tribes/barbarians/shipyard/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/shipyard/conf	2014-07-27 19:35:31 +0000
@@ -24,8 +24,10 @@
 cloth=4
 
 [programs]
-ship=_Constructing ship
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start constructing a ship because ...
+ship=_constructing a ship
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=20000

=== modified file 'tribes/barbarians/smelting_works/conf'
--- tribes/barbarians/smelting_works/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/smelting_works/conf	2014-07-27 19:35:31 +0000
@@ -26,9 +26,12 @@
 coal=8
 
 [programs]
-smelt_iron=_Smelt iron
-smelt_gold=_Smelt gold
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start smelting iron because ...
+smelt_iron=_smelting iron
+# TRANSLATORS: "Completed/Skipped/Did not start smelting gold because ...
+smelt_gold=_smelting gold
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [smelt_iron]
 return=skipped unless economy needs iron

=== modified file 'tribes/barbarians/tavern/conf'
--- tribes/barbarians/tavern/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/tavern/conf	2014-07-27 19:35:31 +0000
@@ -26,8 +26,10 @@
 meat=4
 
 [programs]
-produce_ration=_Produce ration
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a ration because ...
+produce_ration=_preparing a ration
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_ration]
 sleep=14000

=== modified file 'tribes/barbarians/trainingcamp/conf'
--- tribes/barbarians/trainingcamp/conf	2014-03-17 17:23:26 +0000
+++ tribes/barbarians/trainingcamp/conf	2014-07-27 19:35:31 +0000
@@ -40,15 +40,24 @@
 max_level=2
 
 [programs]
-sleep=_Sleep
-upgrade_soldier_attack_0=_Upgrade soldier attack from level 0 to level 1
-upgrade_soldier_attack_1=_Upgrade soldier attack from level 1 to level 2
-upgrade_soldier_attack_2=_Upgrade soldier attack from level 2 to level 3
-upgrade_soldier_attack_3=_Upgrade soldier attack from level 3 to level 4
-upgrade_soldier_attack_4=_Upgrade soldier attack from level 4 to level 5
-upgrade_soldier_hp_0=_Upgrade soldier health from level 0 to level 1
-upgrade_soldier_hp_1=_Upgrade soldier health from level 1 to level 2
-upgrade_soldier_hp_2=_Upgrade soldier health from level 2 to level 3
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+sleep=_sleeping
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_attack_0=_upgrading soldier attack from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading .. because ...
+upgrade_soldier_attack_1=_upgrading soldier attack from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading .. because ...
+upgrade_soldier_attack_2=_upgrading soldier attackupgrading ..from level 2 to level 3
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading .. because ...
+upgrade_soldier_attack_3=_upgrading soldier attack from level 3 to level 4
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading .. because ...
+upgrade_soldier_attack_4=_upgrading soldier attack from level 4 to level 5
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading .. because ...
+upgrade_soldier_hp_0=_upgrading soldier health from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading .. because ...
+upgrade_soldier_hp_1=_upgrading soldier health from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading .. because ...
+upgrade_soldier_hp_2=_upgrading soldier health from level 2 to level 3
 
 [sleep]
 sleep=5000

=== modified file 'tribes/barbarians/warmill/conf'
--- tribes/barbarians/warmill/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/warmill/conf	2014-07-27 19:35:31 +0000
@@ -33,13 +33,20 @@
 gold=8
 
 [programs]
-produce_ax=_Produce ax
-produce_sharpax=_Produce sharp ax
-produce_broadax=_Produce broad ax
-produce_bronzeax=_Produce bronze ax
-produce_battleax=_Produce battle ax
-produce_warriorsax=_Produce warrior’s ax
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start forging an because ...
+produce_ax=_forging an ax
+# TRANSLATORS: "Completed/Skipped/Did not start forging a sharp ax because ...
+produce_sharpax=_forging a sharp ax
+# TRANSLATORS: "Completed/Skipped/Did not start forging a broad ax because ...
+produce_broadax=_forging a broad ax
+# TRANSLATORS: "Completed/Skipped/Did not start forging a bronze ax because ...
+produce_bronzeax=_forging a bronze ax
+# TRANSLATORS: "Completed/Skipped/Did not start forging a battle ax because ...
+produce_battleax=_forging a battle ax
+# TRANSLATORS: "Completed/Skipped/Did not start forging a warrior’s ax because ...
+produce_warriorsax=_forging a warrior’s ax
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_ax]
 return=skipped unless economy needs ax

=== modified file 'tribes/barbarians/weaving-mill/conf'
--- tribes/barbarians/weaving-mill/conf	2014-07-15 10:02:22 +0000
+++ tribes/barbarians/weaving-mill/conf	2014-07-27 19:35:31 +0000
@@ -20,7 +20,8 @@
 thatchreed=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start weaving because ...
+work=_weaving
 
 [work]
 sleep=20000

=== modified file 'tribes/barbarians/well/conf'
--- tribes/barbarians/well/conf	2014-07-21 09:30:12 +0000
+++ tribes/barbarians/well/conf	2014-07-27 19:35:31 +0000
@@ -15,7 +15,8 @@
 carrier=1
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=20000

=== modified file 'tribes/empire/arena/conf'
--- tribes/empire/arena/conf	2014-03-15 11:29:32 +0000
+++ tribes/empire/arena/conf	2014-07-27 19:35:31 +0000
@@ -26,8 +26,10 @@
 max_level=0
 
 [programs]
-sleep=_Sleep
-upgrade_soldier_evade_0=_Upgrade soldier evade from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start sleeping because ...
+sleep=_sleeping
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_evade_0=_upgrading soldier evade from level 0 to level 1
 
 [sleep]
 sleep=5000

=== modified file 'tribes/empire/armorsmithy/conf'
--- tribes/empire/armorsmithy/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/armorsmithy/conf	2014-07-27 19:35:31 +0000
@@ -28,11 +28,16 @@
 cloth=8
 
 [programs]
-produce_helm=_Produce helm
-produce_armor=_Produce armor
-produce_chain_armor=_Produce chain armor
-produce_plate_armor=_Produce plate armor
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start forging a helm because ...
+produce_helm=_forging a helm
+# TRANSLATORS: "Completed/Skipped/Did not start forging an armor because ...
+produce_armor=_forging an armor
+# TRANSLATORS: "Completed/Skipped/Did not start forging a chain armor because ...
+produce_chain_armor=_forging a chain armor
+# TRANSLATORS: "Completed/Skipped/Did not start forging a plate armor because ...
+produce_plate_armor=_forging a plate armor
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_helm]
 return=skipped unless economy needs helm

=== modified file 'tribes/empire/bakery/conf'
--- tribes/empire/bakery/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/bakery/conf	2014-07-27 19:35:31 +0000
@@ -21,7 +21,8 @@
 water=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=15000

=== modified file 'tribes/empire/brewery/conf'
--- tribes/empire/brewery/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/brewery/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 wheat=7
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start brewing because ...
+work=_brewing
 
 [work]
 sleep=30000

=== modified file 'tribes/empire/burners_house/conf'
--- tribes/empire/burners_house/conf	2014-07-15 10:02:22 +0000
+++ tribes/empire/burners_house/conf	2014-07-27 19:35:31 +0000
@@ -21,7 +21,8 @@
 log=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=30000

=== modified file 'tribes/empire/coalmine/conf'
--- tribes/empire/coalmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/coalmine/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 beer=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/empire/colosseum/conf'
--- tribes/empire/colosseum/conf	2014-03-16 20:55:15 +0000
+++ tribes/empire/colosseum/conf	2014-07-27 19:35:31 +0000
@@ -32,9 +32,12 @@
 max_level=1
 
 [programs]
-sleep=_Sleep
-upgrade_soldier_evade_0=_Upgrade soldier evade from level 0 to level 1
-upgrade_soldier_evade_1=_Upgrade soldier evade from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start sleeping because ...
+sleep=_sleeping
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_evade_0=_upgrading soldier evade from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_evade_1=_upgrading soldier evade from level 1 to level 2
 
 [sleep]
 sleep=5000

=== modified file 'tribes/empire/deep_coalmine/conf'
--- tribes/empire/deep_coalmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/deep_coalmine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 beer=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=42000

=== modified file 'tribes/empire/deep_goldmine/conf'
--- tribes/empire/deep_goldmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/deep_goldmine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 wine=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=43000

=== modified file 'tribes/empire/deep_marblemine/conf'
--- tribes/empire/deep_marblemine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/deep_marblemine/conf	2014-07-27 19:35:31 +0000
@@ -24,7 +24,8 @@
 wine=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=43000

=== modified file 'tribes/empire/deep_oremine/conf'
--- tribes/empire/deep_oremine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/deep_oremine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 beer=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=43000

=== modified file 'tribes/empire/donkeyfarm/conf'
--- tribes/empire/donkeyfarm/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/donkeyfarm/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 water=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start rearing donkeys because ...
+work=_rearing donkeys
 
 [work]
 sleep=15000

=== modified file 'tribes/empire/farm/conf'
--- tribes/empire/farm/conf	2014-07-22 12:29:17 +0000
+++ tribes/empire/farm/conf	2014-07-27 19:35:31 +0000
@@ -21,9 +21,12 @@
 farmer=1
 
 [programs]
-plant_wheat=_Plant wheat
-harvest_wheat=_Harvest wheat
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting wheat because ...
+plant_wheat=_planting wheat
+# TRANSLATORS: "Completed/Skipped/Did not start harvesting wheat because ...
+harvest_wheat=_harvesting wheat
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [plant_wheat]
 sleep=14000  #orig 20000

=== modified file 'tribes/empire/fishers_house/conf'
--- tribes/empire/fishers_house/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/fishers_house/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 needs_water=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start fishing because ...
+work=_fishing
 
 [work]
 sleep=17000

=== modified file 'tribes/empire/foresters_house/conf'
--- tribes/empire/foresters_house/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/foresters_house/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 renews_map_resource=log
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=11000

=== modified file 'tribes/empire/goldmine/conf'
--- tribes/empire/goldmine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/goldmine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 wine=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/empire/hunters_house/conf'
--- tribes/empire/hunters_house/conf	2014-07-20 21:23:10 +0000
+++ tribes/empire/hunters_house/conf	2014-07-27 19:35:31 +0000
@@ -16,7 +16,8 @@
 hunter=1
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start hunting because ...
+work=_hunting
 
 [work]
 sleep=35000

=== modified file 'tribes/empire/inn/conf'
--- tribes/empire/inn/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/inn/conf	2014-07-27 19:35:31 +0000
@@ -22,9 +22,12 @@
 meat=6
 
 [programs]
-produce_ration=_Produce ration
-produce_meal=_Produce meal
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a ration because ...
+produce_ration=_preparing a ration
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a meal because ...
+produce_meal=_preparing a meal
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_ration]
 return=skipped unless economy needs ration

=== modified file 'tribes/empire/lumberjacks_house/conf'
--- tribes/empire/lumberjacks_house/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/lumberjacks_house/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 logproducer=true
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=30000 # Barbarian lumberjack sleeps 25000

=== modified file 'tribes/empire/marblemine/conf'
--- tribes/empire/marblemine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/marblemine/conf	2014-07-27 19:35:31 +0000
@@ -24,9 +24,12 @@
 wine=6
 
 [programs]
-mine_marble=_Mine marble
-mine_stone=_Mine stone
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining marble because ...
+mine_marble=_mining marble
+# TRANSLATORS: "Completed/Skipped/Did not start mining stone because ...
+mine_stone=_mining stone
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [mine_marble]
 sleep=20000

=== modified file 'tribes/empire/mill/conf'
--- tribes/empire/mill/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/mill/conf	2014-07-27 19:35:31 +0000
@@ -21,7 +21,8 @@
 wheat=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start grinding wheat because ...
+work=_grinding wheat
 
 [work]
 sleep=5000

=== modified file 'tribes/empire/oremine/conf'
--- tribes/empire/oremine/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/oremine/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 beer=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start mining because ...
+work=_mining
 
 [work]
 sleep=45000

=== modified file 'tribes/empire/piggery/conf'
--- tribes/empire/piggery/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/piggery/conf	2014-07-27 19:35:31 +0000
@@ -22,7 +22,8 @@
 water=7
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start raising pigs because ...
+work=_raising pigs
 
 [work]
 sleep=25000

=== modified file 'tribes/empire/quarry/conf'
--- tribes/empire/quarry/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/quarry/conf	2014-07-27 19:35:31 +0000
@@ -17,9 +17,12 @@
 stoneproducer=true
 
 [programs]
-mine_stone=_Mine stone
-mine_marble=_Mine marble
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start quarrying stone because ...
+mine_stone=_quarrying stone
+# TRANSLATORS: "Completed/Skipped/Did not start quarrying marble because ...
+mine_marble=_quarrying marble
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [mine_stone]
 worker=cut_stone  # This order is on purpose so that the productivity

=== modified file 'tribes/empire/sawmill/conf'
--- tribes/empire/sawmill/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/sawmill/conf	2014-07-27 19:35:31 +0000
@@ -20,7 +20,8 @@
 log=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=16500 # much faster than barbarians hardener

=== modified file 'tribes/empire/scouts_house/conf'
--- tribes/empire/scouts_house/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/scouts_house/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 ration=2
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start scouting because ...
+work=_scouting
 
 [work]
 sleep=30000

=== modified file 'tribes/empire/sheepfarm/conf'
--- tribes/empire/sheepfarm/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/sheepfarm/conf	2014-07-27 19:35:31 +0000
@@ -21,7 +21,8 @@
 water=7
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start breeding sheep because ...
+work=_breeding sheep
 
 [work]
 sleep=25000

=== modified file 'tribes/empire/shipyard/conf'
--- tribes/empire/shipyard/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/shipyard/conf	2014-07-27 19:35:31 +0000
@@ -24,8 +24,10 @@
 cloth=4
 
 [programs]
-ship=_Constructing ship
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start constructing a ship because ...
+ship=_constructing a ship
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=20000

=== modified file 'tribes/empire/smelting_works/conf'
--- tribes/empire/smelting_works/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/smelting_works/conf	2014-07-27 19:35:31 +0000
@@ -23,9 +23,12 @@
 coal=8
 
 [programs]
-smelt_iron=_Smelt iron
-smelt_gold=_Smelt gold
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start smelting iron because ...
+smelt_iron=_smelting iron
+# TRANSLATORS: "Completed/Skipped/Did not start smelting gold because ...
+smelt_gold=_smelting gold
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [smelt_iron]
 return=skipped unless economy needs iron

=== modified file 'tribes/empire/stonemasons_house/conf'
--- tribes/empire/stonemasons_house/conf	2014-07-15 10:02:22 +0000
+++ tribes/empire/stonemasons_house/conf	2014-07-27 19:35:31 +0000
@@ -21,7 +21,8 @@
 marble=6
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=50000

=== modified file 'tribes/empire/tavern/conf'
--- tribes/empire/tavern/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/tavern/conf	2014-07-27 19:35:31 +0000
@@ -25,7 +25,8 @@
 meat=5
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start preparing a ration because ...
+work=_preparing a ration
 
 [work]
 sleep=14000

=== modified file 'tribes/empire/toolsmithy/conf'
--- tribes/empire/toolsmithy/conf	2014-07-15 10:02:22 +0000
+++ tribes/empire/toolsmithy/conf	2014-07-27 19:35:31 +0000
@@ -34,19 +34,32 @@
 log=8
 
 [programs]
-produce_bread_paddle=_Produce bread paddle
-produce_fire_tongs=_Produce fire tongs
-produce_fishing_rod=_Produce fishing rod
-produce_hammer=_Produce hammer
-produce_kitchen_tools=_Produce kitchen tools
-produce_pick=_Produce pick
-produce_scythe=_Produce scythe
-produce_shovel=_Produce shovel
-produce_hunting_spear=_Produce hunting spear
-produce_basket=_Produce basket
-produce_saw=_Produce saw
-produce_ax=_Produce ax
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start making a bread paddle because ...
+produce_bread_paddle=_making a bread paddle
+# TRANSLATORS: "Completed/Skipped/Did not start making fire tongs because ...
+produce_fire_tongs=_making fire tongs
+# TRANSLATORS: "Completed/Skipped/Did not start making a fishing rod because ...
+produce_fishing_rod=_making a fishing rod
+# TRANSLATORS: "Completed/Skipped/Did not start making a hammer because ...
+produce_hammer=_making a hammer
+# TRANSLATORS: "Completed/Skipped/Did not start making kitchen tools because ...
+produce_kitchen_tools=_making kitchen tools
+# TRANSLATORS: "Completed/Skipped/Did not start making a pick because ...
+produce_pick=_making a pick
+# TRANSLATORS: "Completed/Skipped/Did not start making a scythe because ...
+produce_scythe=_making a scythe
+# TRANSLATORS: "Completed/Skipped/Did not start making a shovel because ...
+produce_shovel=_making a shovel
+# TRANSLATORS: "Completed/Skipped/Did not start making a hunting spear because ...
+produce_hunting_spear=_making a hunting spear
+# TRANSLATORS: "Completed/Skipped/Did not start making a basket because ...
+produce_basket=_making a basket
+# TRANSLATORS: "Completed/Skipped/Did not start making a saw because ...
+produce_saw=_making a saw
+# TRANSLATORS: "Completed/Skipped/Did not start making an ax because ...
+produce_ax=_making an ax
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_bread_paddle]
 return=skipped unless economy needs bread_paddle

=== modified file 'tribes/empire/trainingcamp/conf'
--- tribes/empire/trainingcamp/conf	2014-03-17 17:23:26 +0000
+++ tribes/empire/trainingcamp/conf	2014-07-27 19:35:31 +0000
@@ -43,15 +43,24 @@
 max_level=3
 
 [programs]
-sleep=_Sleep
-upgrade_soldier_attack_0=_Upgrade soldier attack from level 0 to level 1
-upgrade_soldier_attack_1=_Upgrade soldier attack from level 1 to level 2
-upgrade_soldier_attack_2=_Upgrade soldier attack from level 2 to level 3
-upgrade_soldier_attack_3=_Upgrade soldier attack from level 3 to level 4
-upgrade_soldier_hp_0=_Upgrade soldier health from level 0 to level 1
-upgrade_soldier_hp_1=_Upgrade soldier health from level 1 to level 2
-upgrade_soldier_hp_2=_Upgrade soldier health from level 2 to level 3
-upgrade_soldier_hp_3=_Upgrade soldier health from level 3 to level 4
+# TRANSLATORS: "Completed/Skipped/Did not start sleeping because ...
+sleep=_sleeping
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_attack_0=_upgrading soldier attack from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_attack_1=_upgrading soldier attack from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_attack_2=_upgrading soldier attack from level 2 to level 3
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_attack_3=_upgrading soldier attack from level 3 to level 4
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_hp_0=_upgrading soldier health from level 0 to level 1
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_hp_1=_upgrading soldier health from level 1 to level 2
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_hp_2=_upgrading soldier health from level 2 to level 3
+# TRANSLATORS: "Completed/Skipped/Did not start upgrading ... because ...
+upgrade_soldier_hp_3=_upgrading soldier health from level 3 to level 4
 
 [sleep]
 sleep=5000

=== modified file 'tribes/empire/vineyard/conf'
--- tribes/empire/vineyard/conf	2014-07-22 12:29:17 +0000
+++ tribes/empire/vineyard/conf	2014-07-27 19:35:31 +0000
@@ -21,9 +21,12 @@
 vinefarmer=1
 
 [programs]
-plant_vine=_Plant vine
-harvest_vine=_Harvest vine
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start planting grapevines because ...
+plant_vine=_planting grapevines
+# TRANSLATORS: "Completed/Skipped/Did not start harvesting grapes because ...
+harvest_vine=_harvesting grapes
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [plant_vine]
 sleep=20000

=== modified file 'tribes/empire/weaponsmithy/conf'
--- tribes/empire/weaponsmithy/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/weaponsmithy/conf	2014-07-27 19:35:31 +0000
@@ -30,12 +30,18 @@
 wood=8
 
 [programs]
-produce_wood_lance=_Produce wood lance
-produce_lance=_Produce lance
-produce_advanced_lance=_Produce advanced lance
-produce_heavy_lance=_Produce heavy lance
-produce_war_lance=_Produce war lance
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start forging a wood lance because ...
+produce_wood_lance=_forging a wood lance
+# TRANSLATORS: "Completed/Skipped/Did not start forging a lance because ...
+produce_lance=_forging a lance
+# TRANSLATORS: "Completed/Skipped/Did not start forging an advanced lance because ...
+produce_advanced_lance=_forging an advanced lance
+# TRANSLATORS: "Completed/Skipped/Did not start forging a heavy lance because ...
+produce_heavy_lance=_forging a heavy lance
+# TRANSLATORS: "Completed/Skipped/Did not start forging a war lance because ...
+produce_war_lance=_forging a war lance
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [produce_wood_lance]
 return=skipped unless economy needs wood_lance

=== modified file 'tribes/empire/weaving-mill/conf'
--- tribes/empire/weaving-mill/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/weaving-mill/conf	2014-07-27 19:35:31 +0000
@@ -17,7 +17,8 @@
 wool=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start weaving because ...
+work=_weaving
 
 [work]
 sleep=25000 # orig 40000

=== modified file 'tribes/empire/well/conf'
--- tribes/empire/well/conf	2014-07-21 09:30:12 +0000
+++ tribes/empire/well/conf	2014-07-27 19:35:31 +0000
@@ -18,7 +18,8 @@
 carrier=1
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 sleep=20000

=== modified file 'tribes/empire/winery/conf'
--- tribes/empire/winery/conf	2014-07-15 10:02:22 +0000
+++ tribes/empire/winery/conf	2014-07-27 19:35:31 +0000
@@ -23,7 +23,8 @@
 grape=8
 
 [programs]
-work=_Work
+# TRANSLATORS: "Completed/Skipped/Did not start working because ...
+work=_working
 
 [work]
 # grapes are only needed for wine, so no need to check if wine is needed


Follow ups