← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/authors into lp:widelands

 

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

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1424072 in widelands: "Automatically add translator credits to authors list"
  https://bugs.launchpad.net/widelands/+bug/1424072

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/authors/+merge/250513

All README files have been converted to Lua.

Translator credits are read from the translator_credits gettext catalog.

After this has been approved, the website code needs to be adapted as well before merging. Also, make sure that no updates to the developers list have been overlooked.

I also have a strange NOCOM - the new FullscreenMenuAuthorsView object needs a string input parameter in the constructor, otherwise the compiler will barf. I have no idea why, because the string doesn't do anything. The compiler error is:

[ 45%] Building CXX object src/CMakeFiles/widelands_ball_of_mud.dir/wlapplication.cc.o
/home/sources/widelands/authors/src/wlapplication.cc: In member function ‘void WLApplication::mainmenu()’:
/home/sources/widelands/authors/src/wlapplication.cc:1088:8: error: request for member ‘run’ in ‘ff’, which is of non-class type ‘FullscreenMenuAuthorsView()’
     ff.run();

-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/authors into lp:widelands.
=== modified file 'i18n/locales.lua'
--- i18n/locales.lua	2014-12-02 07:19:33 +0000
+++ i18n/locales.lua	2015-02-20 21:55:24 +0000
@@ -2,7 +2,10 @@
    -- Locales are identified by their ISO code.
 	ar =  {
       -- Used to display the locale in the Options menu.
-		name = "العربية",
+		native_name = "العربية",
+
+		-- Used to display the locale in the translators list.
+		localized_name = _"Arabic",
 
       -- Defines the language's position on the list in the Options
       -- menu.
@@ -14,343 +17,401 @@
 	},
 
 	ast = {
-		name = "Asturianu",
+		native_name = "Asturianu",
+		localized_name = _"Asturian",
 		sort_name = "Asturianu",
 		font = "default"
 	},
 
 	bg = {
-		name = "Български език",
+		native_name = "Български език",
+		localized_name = _"Bulgarian",
 		sort_name = "Balgarski",
 		font = "default"
 	},
 
 	ca = {
-		name = "Català",
+		native_name = "Català",
+		localized_name = _"Catalan",
 		sort_name = "Catala",
 		font = "default"
 	},
 
 	cs = {
-		name = "Čeština",
+		native_name = "Čeština",
+		localized_name = _"Czech",
 		sort_name = "Cestina",
 		font = "default"
 	},
 
 	da = {
-		name = "Dansk",
+		native_name = "Dansk",
+		localized_name = _"Danish",
 		sort_name = "Dansk",
 		font = "default"
 	},
 
 	de = {
-		name = "Deutsch",
+		native_name = "Deutsch",
+		localized_name = _"German",
 		sort_name = "Deutsch",
 		font = "default"
 	},
 
 	el = {
-		name = "Ελληνικά",
+		native_name = "Ελληνικά",
+		localized_name = _"Greek",
 		sort_name = "Ellinika",
 		font = "default"
 	},
 
+	en = {
+		native_name = "English",
+		localized_name = _"English",
+		sort_name = "English",
+		font = "default"
+	},
+
 	en_AU = {
-		name = "Australian English",
+		native_name = "Australian English",
+		localized_name = _"English (Australia)",
 		sort_name = "English (Australia)",
 		font = "default"
 	},
 
 	en_CA = {
-		name = "Canadian English",
+		native_name = "Canadian English",
+		localized_name = _"English (Canada)",
 		sort_name = "English (Canada)",
 		font = "default"
 	},
 
 	en_GB = {
-		name = "British English",
+		native_name = "British English",
+		localized_name = _"English (Great Britain)",
 		sort_name = "English (Great Britain)",
 		font = "default"
 	},
 
-	en = {
-		name = "English",
-		sort_name = "English",
-		font = "default"
-	},
-
 	en_US = {
-		name = "US American English",
+		native_name = "US American English",
+		localized_name = _"English (United States)",
 		sort_name = "English (USA)",
 		font = "default"
 	},
 
 	eo = {
-		name = "Esperanto",
+		native_name = "Esperanto",
+		localized_name = _"Esperanto",
 		sort_name = "Esperanto",
 		font = "default"
 	},
 
 	es = {
-		name = "Español",
+		native_name = "Español",
+		localized_name = _"Spanish",
 		sort_name = "Espanol",
 		font = "default"
 	},
 
 	et = {
-		name = "Eesti keel",
+		native_name = "Eesti keel",
+		localized_name = _"Estonian",
 		sort_name = "Eesti keel",
 		font = "default"
 	},
 
 	eu = {
-		name = "Euskara",
+		native_name = "Euskara",
+		localized_name = _"Basque",
 		sort_name = "Euskara",
 		font = "default"
 	},
 
 	fa = {
-		name = "فارسی",
+		native_name = "فارسی",
+		localized_name = _"Persian",
 		sort_name = "Farsi",
 		font = "arabic"
 	},
 
 	fi = {
-		name = "Suomi",
+		native_name = "Suomi",
+		localized_name = _"Finnish",
 		sort_name = "Suomi",
 		font = "default"
 	},
 
 	fr = {
-		name = "Français",
+		native_name = "Français",
+		localized_name = _"French",
 		sort_name = "Francais",
 		font = "default"
 	},
 
 	gd = {
-		name = "Gàidhlig",
+		native_name = "Gàidhlig",
+		localized_name = _"Scottish Gaelic",
 		sort_name = "Gaidhlig",
 		font = "default"
 	},
 
 	gl = {
-		name = "Galego",
+		native_name = "Galego",
+		localized_name = _"Galician",
 		sort_name = "Galego",
 		font = "default"
 	},
 
 	he = {
-		name = "עברית",
+		native_name = "עברית",
+		localized_name = _"Hebrew",
 		sort_name = "Ivrit",
 		font = "hebrew"
 	},
 
 	hr = {
-		name = "Hrvatski",
+		native_name = "Hrvatski",
+		localized_name = _"Croatian",
 		sort_name = "Hrvatski",
 		font = "default"
 	},
 
 	hu = {
-		name = "Magyar",
+		native_name = "Magyar",
+		localized_name = _"Hungarian",
 		sort_name = "Magyar",
 		font = "default"
 	},
 
 	ia = {
-		name = "Interlingua",
+		native_name = "Interlingua",
+		localized_name = _"Interlingua",
 		sort_name = "Interlingua",
 		font = "default"
 	},
 
 	id = {
-		name = "Bahasa Indonesia",
+		native_name = "Bahasa Indonesia",
+		localized_name = _"Indonesian",
 		sort_name = "Indonesia",
 		font = "default"
 	},
 
 	it = {
-		name = "Italiano",
+		native_name = "Italiano",
+		localized_name = _"Italian",
 		sort_name = "Italiano",
 		font = "default"
 	},
 
 	ja = {
-		name = "日本語",
+		native_name = "日本語",
+		localized_name = _"Japanese",
 		sort_name = "Nihongo",
 		font = "cjk"
 	},
 
 	jv = {
-		name = "Basa jawa",
+		native_name = "Basa jawa",
+		localized_name = _"Javanese",
 		sort_name = "Jawa",
 		font = "default"
 	},
 
 	ka = {
-		name = "ქართული",
+		native_name = "ქართული",
+		localized_name = _"Georgian",
 		sort_name = "Kartuli",
 		font = "default"
 	},
 
 	ko = {
-		name = "한국어",
+		native_name = "한국어",
+		localized_name = _"Korean",
 		sort_name = "Hangug-eo",
 		font = "cjk"
 	},
 
 	la = {
-		name = "Lingua latīna",
+		native_name = "Lingua latīna",
+		localized_name = _"Latin",
 		sort_name = "Latina",
 		font = "default"
 	},
 
 	lt = {
-		name = "Lietuvių",
+		native_name = "Lietuvių",
+		localized_name = _"Lithuanian",
 		sort_name = "Lietuviu",
 		font = "default"
 	},
 
 	mr = {
-		name = "मराठी",
+		native_name = "मराठी",
+		localized_name = _"Marathi",
 		sort_name = "Marathi",
 		font = "devanagari"
 	},
 
 	ms = {
-		name = "بهاس ملايو",
+		native_name = "بهاس ملايو",
+		localized_name = _"Malay",
 		sort_name = "Melayu",
 		font = "arabic"
 	},
 
 	my = {
-		name = "မြန်မာစ",
+		native_name = "မြန်မာစ",
+		localized_name = _"Burmese",
 		sort_name = "Myanma",
 		font = "myanmar"
 	},
 
 	nb = {
-		name = "Norsk (Bokmål)",
+		native_name = "Norsk (Bokmål)",
+		localized_name = _"Norwegian (Bokmål)",
 		sort_name = "Norsk (Bokmal)",
 		font = "default"
 	},
 
 	nds = {
-		name = "Plattdütsch",
+		native_name = "Plattdütsch",
+		localized_name = _"Low German",
 		sort_name = "Plattdutsch",
 		font = "default"
 	},
 
 	nl = {
-		name = "Nederlands",
+		native_name = "Nederlands",
+		localized_name = _"Dutch",
 		sort_name = "Nederlands",
 		font = "default"
 	},
 
 	nn = {
-		name = "Nynorsk",
+		native_name = "Nynorsk",
+		localized_name = _"Norwegian (Nynorsk)",
 		sort_name = "Nynorsk",
 		font = "default"
 	},
 
 	oc = {
-		name = "Occitan",
+		native_name = "Occitan",
+		localized_name = _"Occitan",
 		sort_name = "Occitan",
 		font = "default"
 	},
 
 	pl = {
-		name = "Polski",
+		native_name = "Polski",
+		localized_name = _"Polish",
 		sort_name = "Polski",
 		font = "default"
 	},
 
+	pt = {
+		native_name = "Português",
+		localized_name = _"Portuguese",
+		sort_name = "Portugues",
+		font = "default"
+	},
+
 	pt_BR = {
-		name = "Português do Brasil",
+		native_name = "Português do Brasil",
+		localized_name = _"Portuguese (Brasil)",
 		sort_name = "Portugues (Brasil)",
 		font = "default"
 	},
 
-	pt = {
-		name = "Português",
-		sort_name = "Portugues",
-		font = "default"
-	},
 
 	ro = {
-		name = "Română",
+		native_name = "Română",
+		localized_name = _"Romanian",
 		sort_name = "Romana",
 		font = "default"
 	},
 
 	ru = {
-		name = "Русский",
+		native_name = "Русский",
+		localized_name = _"Russian",
 		sort_name = "Russky",
 		font = "default"
 	},
 
 	rw = {
-		name = "Kinyarwanda",
+		native_name = "Kinyarwanda",
+		localized_name = _"Kinyarwanda",
 		sort_name = "Kinyarwanda",
 		font = "default"
 	},
 
 	si = {
-		name = "සිංහල",
+		native_name = "සිංහල",
+		localized_name = _"Sinhala",
 		sort_name = "Simhala",
 		font = "sinhala"
 	},
 
 	sk = {
-		name = "Slovenský jazyk",
+		native_name = "Slovenský jazyk",
+		localized_name = _"Slovak",
 		sort_name = "Slovensky",
 		font = "default"
 	},
 
 	sl = {
-		name = "Slovenski jezik",
+		native_name = "Slovenski jezik",
+		localized_name = _"Slovenian",
 		sort_name = "Slovenski",
 		font = "default"
 	},
 
 	sr = {
-		name = "Srpski",
+		native_name = "Srpski",
+		localized_name = _"Serbian",
 		sort_name = "Srpski",
 		font = "default"
 	},
 
 	sv = {
-		name = "Svenska",
+		native_name = "Svenska",
+		localized_name = _"Swedish",
 		sort_name = "Svenska",
 		font = "default"
 	},
 
 	tr = {
-		name = "Türkçe",
+		native_name = "Türkçe",
+		localized_name = _"Turkish",
 		sort_name = "Turkce",
 		font = "default"
 	},
 
 	uk = {
-		name = "українська мова",
+		native_name = "українська мова",
+		localized_name = _"Ukrainian",
 		sort_name = "Ukrayinska",
 		font = "default"
 	},
 
 	vi = {
-		name = "Tiếng Việt",
+		native_name = "Tiếng Việt",
+		localized_name = _"Vietnamese",
 		sort_name = "Viet",
 		font = "default"
 	},
 
 	zh_CN = {
-		name = "简体中文",
+		native_name = "简体中文",
+		localized_name = _"Chinese (China)",
 		sort_name = "Jianti Zhongwen",
 		font = "cjk"
 	},
 
 	zh_TW = {
-		name = "繁體中文",
+		native_name = "繁體中文",
+		localized_name = _"Chinese (Taiwan)",
 		sort_name = "Fanti Zhongwen",
 		font = "cjk"
 	}

=== modified file 'src/editor/ui_menus/editor_main_menu.cc'
--- src/editor/ui_menus/editor_main_menu.cc	2014-11-30 18:49:38 +0000
+++ src/editor/ui_menus/editor_main_menu.cc	2015-02-20 21:55:24 +0000
@@ -92,7 +92,7 @@
 	m_button_map_options.sigclicked.connect(boost::bind(&EditorMainMenu::map_options_btn, this));
 
 	m_window_readme.open_window = [this] {
-		fileview_window(eia(), m_window_readme, "txts/editor_readme");
+		fileview_window(eia(), m_window_readme, "txts/editor_readme.lua");
 	};
 	m_button_view_readme.sigclicked.connect(
 	   boost::bind(&UI::UniqueWindow::Registry::toggle, m_window_readme));

=== modified file 'src/ui_fsmenu/fileview.cc'
--- src/ui_fsmenu/fileview.cc	2015-01-31 16:03:59 +0000
+++ src/ui_fsmenu/fileview.cc	2015-02-20 21:55:24 +0000
@@ -19,9 +19,11 @@
 
 #include "ui_fsmenu/fileview.h"
 
+#include <map>
 #include <memory>
 
-#include <boost/algorithm/string/predicate.hpp>
+#include <boost/algorithm/string.hpp>
+#include <boost/format.hpp>
 
 #include "base/i18n.h"
 #include "graphic/font_handler1.h"
@@ -29,40 +31,86 @@
 #include "graphic/text/font_set.h"
 #include "graphic/text_constants.h"
 #include "io/filesystem/filesystem.h"
-#include "profile/profile.h"
 #include "scripting/lua_interface.h"
 #include "scripting/lua_table.h"
 
 namespace {
 bool read_text(const std::string& filename, std::string* title, std::string* content) {
-	if (boost::algorithm::ends_with(filename, ".lua")) {
-		try {
-			LuaInterface lua;
-			std::unique_ptr<LuaTable> t(lua.run_script(filename));
-			*content = t->get_string("text");
-			*title = t->get_string("title");
-		} catch (LuaError & err) {
-			*content = err.what();
-			*title = "Lua error";
-			return false;
-		}
-	} else {  // Old style plain text file.
-		Profile prof(filename.c_str(), "global", "texts"); // section-less file
-		Section & s = prof.get_safe_section("global");
-
-		*title = s.get_safe_string("title");
-		*content = s.get_safe_string("text");
+	try {
+		LuaInterface lua;
+		std::unique_ptr<LuaTable> t(lua.run_script(filename));
+		*content = t->get_string("text");
+		*title = t->get_string("title");
+	} catch (LuaError & err) {
+		*content = err.what();
+		*title = "Lua error";
+		return false;
 	}
 	return true;
 }
 
+bool read_authors(std::string* title, std::string* content) {
+	bool result = read_text("txts/AUTHORS.lua", title, content);
+	const std::string userlocale = i18n::get_locale();
+	try {
+		LuaInterface lua;
+		std::unique_ptr<LuaTable> all_locales(lua.run_script("i18n/locales.lua"));
+
+		// Sort the locales for their sort_name
+		std::map<std::string, std::string> sorted_locales;
+		{
+			i18n::Textdomain td("texts");
+			for (const std::string code : all_locales->keys<std::string>()) {
+				std::unique_ptr<LuaTable> locale = all_locales->get_table(code);
+				locale->do_not_warn_about_unaccessed_keys();
+				sorted_locales.emplace(_(locale->get_string("localized_name")), code);
+			}
+		}
+
+		i18n::Textdomain td("translator_credits");
+		std::string translators;
+		for (const std::pair<std::string, std::string>& locale_pair : sorted_locales) {
+			std::unique_ptr<LuaTable> locale = all_locales->get_table(locale_pair.second);
+			locale->do_not_warn_about_unaccessed_keys();
+			i18n::set_locale(locale_pair.second);
+			const std::string locale_translators = _("Translator Credits");
+			if (!boost::iequals(locale_translators, "Translator Credits")) { // Do not list empty credits
+				// Display language name
+				translators =
+						(boost::format("%s<rt><p font-size=14 font-weight=bold font-color=D1D1D1>%s<br></p></rt>")
+						 % translators.c_str()
+						 % locale_pair.first.c_str()).str();
+				// Display the translators list
+				std::vector<std::string> lines;
+				boost::split(lines, locale_translators, boost::is_any_of("\n"));
+				for (const std::string locale_translator : lines) {
+					translators =
+							(boost::format("%s<rt image=pics/fsel_editor_set_height.png"
+												" image-align=left text-align=left><p font-size=12>%s</p></rt>")
+							 % translators.c_str()
+							 % locale_translator.c_str()).str();
+				}
+			}
+		}
+		*content = (boost::format(*content) % translators.c_str()).str();
+	} catch (LuaError & err) {
+		i18n::set_locale(userlocale);
+		*content = err.what();
+		*title = "Lua error";
+		return false;
+	}
+	i18n::set_locale(userlocale);
+	return result;
+}
+
 }  // namespace
+
 FullscreenMenuTextView::FullscreenMenuTextView
-	(const std::string & filename)
+	()
 	:
 	FullscreenMenuBase("fileviewmenu.jpg"),
 
-	title (this, get_w() * 3 / 50, get_h() / 10),
+	title (this, get_w() * 3 / 50, get_h() / 10, "", UI::Align_Center),
 
 	textview
 		(this,
@@ -77,12 +125,6 @@
 {
 	close_button.sigclicked.connect(boost::bind(&FullscreenMenuTextView::end_modal, boost::ref(*this), 0));
 
-	std::string content, title_text;
-	read_text(filename, &title_text, &content);
-
-	title   .set_text(title_text);
-	textview.set_text(content);
-
 	title.set_font(ui_fn(), fs_big(), UI_FONT_CLR_FG);
 	title.set_pos
 		(Point((get_inner_w() - title.get_w()) / 2, get_h() * 167 / 1000));
@@ -95,32 +137,46 @@
 	textview.set_text(text);
 }
 
+void FullscreenMenuTextView::set_title(const std::string& text)
+{
+	title.set_text(text);
+}
+
 FullscreenMenuFileView::FullscreenMenuFileView(const std::string & filename)
-: FullscreenMenuTextView(filename)
-{}
-
-
-struct FileViewWindow : public UI::UniqueWindow {
-	FileViewWindow
+: FullscreenMenuTextView()
+{
+	std::string content, title_text;
+	read_text(filename, &title_text, &content);
+	set_text(content);
+	set_title(title_text);
+}
+
+FullscreenMenuAuthorsView::FullscreenMenuAuthorsView(const std::string&)
+: FullscreenMenuTextView()
+{
+	std::string content, title_text;
+	read_authors(&title_text, &content);
+	set_text(content);
+	set_title(title_text);
+}
+
+struct TextViewWindow : public UI::UniqueWindow {
+	TextViewWindow
 		(UI::Panel                  & parent,
-		 UI::UniqueWindow::Registry & reg,
-		 const std::string          & filename);
+		 UI::UniqueWindow::Registry & reg);
+protected:
+	void set_text(const std::string & text);
 private:
 	UI::MultilineTextarea textview;
 };
 
-FileViewWindow::FileViewWindow
+TextViewWindow::TextViewWindow
 	(UI::Panel                  & parent,
-	 UI::UniqueWindow::Registry & reg,
-	 const std::string          & filename)
+	 UI::UniqueWindow::Registry & reg)
 	:
 	UI::UniqueWindow(&parent, "file_view", &reg, 0, 0, ""),
 	textview(this, 0, 0, 560, 240)
 {
-	std::string title_text, content;
-	read_text(filename, &title_text, &content);
-
-	textview.set_text(content);
 	textview.set_font(UI::g_fh1->fontset().serif(), UI_FONT_SIZE_PROSA, PROSA_FONT_CLR_FG);
 
 	set_inner_size(560, 240);
@@ -129,6 +185,47 @@
 		center_to_parent();
 }
 
+void TextViewWindow::set_text(const std::string& text)
+{
+	textview.set_text(text);
+}
+
+
+struct FileViewWindow : public TextViewWindow {
+	FileViewWindow
+		(UI::Panel                  & parent,
+		 UI::UniqueWindow::Registry & reg,
+		 const std::string          & filename);
+};
+
+FileViewWindow::FileViewWindow
+	(UI::Panel                  & parent,
+	 UI::UniqueWindow::Registry & reg,
+	 const std::string          & filename)
+	:
+	TextViewWindow(parent, reg)
+{
+	std::string title_text, content;
+	read_text(filename, &title_text, &content);
+	set_text(content);
+	set_title(title_text);
+}
+
+
+struct AuthorsWindow : public TextViewWindow {
+	AuthorsWindow(UI::Panel& parent, UI::UniqueWindow::Registry& reg);
+};
+
+AuthorsWindow::AuthorsWindow(UI::Panel& parent, UI::UniqueWindow::Registry& reg)
+	:
+	TextViewWindow(parent, reg)
+{
+	std::string title_text, content;
+	read_authors(&title_text, &content);
+	set_text(content);
+	set_title(title_text);
+}
+
 
 /**
  * Display the contents of a text file in a scrollable window.
@@ -140,3 +237,11 @@
 {
 	new FileViewWindow(parent, reg, filename);
 }
+
+
+/**
+ * Display the contents of the authors file in a scrollable window.
+*/
+void authors_window(UI::Panel& parent, UI::UniqueWindow::Registry& reg) {
+	new AuthorsWindow(parent, reg);
+}

=== modified file 'src/ui_fsmenu/fileview.h'
--- src/ui_fsmenu/fileview.h	2014-11-13 08:39:14 +0000
+++ src/ui_fsmenu/fileview.h	2015-02-20 21:55:24 +0000
@@ -34,16 +34,21 @@
 	 UI::UniqueWindow::Registry & reg,
 	 const std::string          & filename);
 
+void authors_window
+	(UI::Panel                  & parent,
+	 UI::UniqueWindow::Registry & reg);
+
 /**
  * Shows a Text in a Fullscreen Menu. Can automatically handle Lua files and
  * plain text files. Waits for the button Ok to be clicked.
 */
 class FullscreenMenuTextView : public FullscreenMenuBase {
 public:
-	FullscreenMenuTextView(const std::string & filename);
+	FullscreenMenuTextView();
 
 protected:
-	void set_text(const std::string & text);
+	void set_title(const std::string& title);
+	void set_text(const std::string& text);
 
 private:
 	UI::Textarea                                title;
@@ -60,6 +65,12 @@
 	FullscreenMenuFileView(const std::string & filename);
 };
 
+class FullscreenMenuAuthorsView : public FullscreenMenuTextView {
+public:
+	// NOCOM(GunChleoc): This parameter doesn't do anything, but if I remove it,
+	// wlapplication won't run the panel (compiler complains it's not a class).
+	FullscreenMenuAuthorsView(const std::string& foo);
+};
 
 
 #endif  // end of include guard: WL_UI_FSMENU_FILEVIEW_H

=== modified file 'src/ui_fsmenu/options.cc'
--- src/ui_fsmenu/options.cc	2015-01-31 16:03:59 +0000
+++ src/ui_fsmenu/options.cc	2015-02-20 21:55:24 +0000
@@ -433,7 +433,7 @@
 				std::unique_ptr<LuaTable> table = all_locales->get_table(localename);
 				table->do_not_warn_about_unaccessed_keys();
 
-				const std::string name = table->get_string("name");
+				const std::string name = table->get_string("native_name");
 				const std::string sortname = table->get_string("sort_name");
 				std::unique_ptr<UI::FontSet> fontset(new UI::FontSet(localename));
 				entries.push_back(LanguageEntry(localename, name, sortname, fontset->serif()));

=== modified file 'src/wlapplication.cc'
--- src/wlapplication.cc	2015-01-21 20:57:11 +0000
+++ src/wlapplication.cc	2015-02-20 21:55:24 +0000
@@ -1079,12 +1079,12 @@
 				break;
 			}
 			case FullscreenMenuMain::MenuTarget::kLicense: {
-				FullscreenMenuFileView ff("txts/license");
+				FullscreenMenuFileView ff("txts/LICENSE.lua");
 				ff.run();
 				break;
 			}
 			case FullscreenMenuMain::MenuTarget::kAuthors: {
-				FullscreenMenuFileView ff("txts/developers");
+				FullscreenMenuAuthorsView ff("foo"); // NOCOM(GunChleoc): won't run without a string
 				ff.run();
 				break;
 			}

=== modified file 'src/wui/game_options_menu.cc'
--- src/wui/game_options_menu.cc	2014-10-17 14:26:08 +0000
+++ src/wui/game_options_menu.cc	2015-02-20 21:55:24 +0000
@@ -144,11 +144,10 @@
 	m_windows.license.open_window = boost::bind
 		(&fileview_window, boost::ref(m_gb),
 		 boost::ref(m_windows.license),
-		 "txts/license");
+		 "txts/LICENSE.lua");
 	m_windows.authors.open_window = boost::bind
-		(&fileview_window, boost::ref(m_gb),
-		 boost::ref(m_windows.authors),
-		 "txts/developers");
+		(&authors_window, boost::ref(m_gb),
+		 boost::ref(m_windows.authors));
 
 #define INIT_BTN_HOOKS(registry, btn)                                        \
  registry.on_create = std::bind(&UI::Button::set_perm_pressed, &btn, true);  \

=== renamed file 'txts/developers' => 'txts/AUTHORS.lua'
--- txts/developers	2015-01-31 14:30:56 +0000
+++ txts/AUTHORS.lua	2015-02-20 21:55:24 +0000
@@ -1,389 +1,440 @@
-title=_Authors
-text=_""<rt text-align=center><p font-size=28 font-decoration=bold font-face=serif font-color=2F9131>"
-_ "Widelands Development Team"
-"</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Chieftain"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_01.png image-align=left text-align=left><p font-size=12> Holger Rapp (SirVer)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Elders"
-"<br></p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Graphics"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png image-align=left text-align=left><p font-size=12>vacant</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Homepage"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12> Markus Pfitzner (janus)</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Sound"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png image-align=left text-align=left><p font-size=12> Jan Bruns (solatis)</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Tongues"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png image-align=left text-align=left><p font-size=12>GunChleoc</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-_ "Coders"
-"</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Holger Rapp (SirVer)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Nicolai Hähnle (ixprefect)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Florian Bluemel</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Florian Falkner (foldrian)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Florian Weber (Bedouin)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Philipp Engelhard</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Stefan Boettner</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Tron</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Martin Quinson</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Raul Ferriz</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Willem Jan Palenstijn</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Josef Spillner</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Christof Petig</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Erik Sigra (sigra)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Nanne Wams</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Surgery</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Andrius R. (knutux)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Jari Hautio (jarih)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Victor Pelt (Dwarik)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Axel Gehlert (dunkelbrauer)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> András Eisenberger (Kiscsirke)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Andi</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Timo</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Hannes</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> TimoW</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Jens Beyer (Qcumber-some)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Andreas Breitschopp (ab-tools)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Joachim Breitner (nomeata)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Nizamov Shawkat</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Carl-Philip Hänsch (carli)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Martin Prussak (martin)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> David Allwicher (aber)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Nathan Peters (nathanpeters)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Leif Sandstede (lcsand)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Matthias Horne (shevonar)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Borim (borim)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Angelo Locritani (alocritani)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Gabriel Margiani (gamag)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Anthony J. Bentley (anthonyjbentley)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Peter Waller (iri)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Johannes Ebke (sirius-in4matiker)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Andreas Eriksson</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Mark Scott</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Teppo Mäenpää</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Steven De Herdt</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Charly Ghislain (cghislai)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Tino Miegel (TinoM)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Tibor Bamhor (tiborb95)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Ferdinand Thiessen (f-thiessen)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Willy Scheibel (willyscheibel)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Martin Schmidt (mars)</p></rt>"
-"<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12> Simon Eilting</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Graphicians"
-"</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Albert Jasiowka</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Holger Rapp (SirVer)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Marz</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Philipp Engelhard</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Yannick Warnier</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Delia</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Florian Neuerburg</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Jerome Rosinski</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Mats Olsson</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Odin Omdal</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Wolfgang Weidner</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Andreas Baier</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Juri Chomé</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Toralf Bethke (bithunter32)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Alexia Death</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Repsa Jih</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Geoffroy Schmitlin (Trimard)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Benedikt Freisen (Objpaswriter)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Stefano Guidoni (Ilguido)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Samith Sandanayake (samithdisal)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Chuck Wilder (chuckw)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Astuur</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Gerrit Familiegrosskopf (kingcreole)</p></rt>"
-"<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12> Florian Angermeier (fraang)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Musicians"
-"</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Kristian</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> MiddleFinger</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Valerio Orlandini (Symbiosis)</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Barry van Oudtshoorn (barryvan)</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Jan Bruns (Solatis)</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Nikola Whallon (Saturn)</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Joshua O'Leary (Joshun)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Sound Effects"
-"</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Stefan de Konik</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Stephan</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Adam Piggott (_aD)</p></rt>"
-"<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12> Stanisław Gackowski (Soeb)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Maps and Missions"
-"</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Michal Szopa (Winterwind)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Jan-Henrik Kluth (Isch)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Sven (deviant)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Tuxlands</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Kamil Wilczek (Another Barbarian)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Tarvo Reim (Tarrei)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Manuel Holzmeier (Quappo)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> ivh</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Hanna Podewski (kristin)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Teppo Mäenpää</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> fk</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Einstein13</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Jenia</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Robnick</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> wl-zocker</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold text-align=left font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Campaign Story"
-"</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=bold text-align=left font-face=serif font-color=f4a131>"
-_ "Barbarian"
-"</p></rt>"
-"<rt image=pics/ls_wlmap.png image-align=left text-align=left><p font-size=12> Bastian Rapp</p></rt>"
-"<rt image=pics/ls_wlmap.png image-align=left text-align=left><p font-size=12> Alexander Kahl (wolfpac)</p></rt>"
-"<rt image=pics/ls_wlmap.png image-align=left text-align=left><p font-size=12> Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=bold text-align=left font-face=serif font-color=f4a131>"
-_ "Empire"
-"</p></rt>"
-"<rt image=pics/ls_wlmap.png image-align=left text-align=left><p font-size=12> Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=bold text-align=left font-face=serif font-color=f4a131>"
-_ "Atlantean"
-"</p></rt>"
-"<rt image=pics/ls_wlmap.png image-align=left text-align=left><p font-size=12> Holger Rapp (SirVer)</p></rt>"
-"<rt image=pics/ls_wlmap.png image-align=left text-align=left><p font-size=12> Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Translators"
-"</p></rt>"
-"<rt><p font-size=14 font-face=serif font-color=FFFFDD>"
-_ "NOTE: this list holds people that translated Widelands before we moved to launchpad.net. "
-_ "See https://translations.launchpad.net/widelands for a list of people that helped to translate Widelands via launchpad.net."
-"</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Czech"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Matej Svrcek (prometheus)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Martin Vecera (Marvec)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Marek Donar (Markus7cz)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Dansk"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Erik Soe Sorensen</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Joe Hansen (joedalton)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Dutch"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Rob Snelders (Ertai)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Johan Jonkman (Dikjuh)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Pieter Ouwerkerk (Pietertje)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Finnish"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Pekka Järvinen (Raspi)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Sini Ruohomaa (Byakushin)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "French"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>AnubiS</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Emmanuel Andry (Eandry)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Jean-Pierre Gemble</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Galician"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Antonio Trueba (Fasser)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "German"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Hagen</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Philipp Niemann (Azagtoth)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Johannes (nuefke)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Tino Miegel (TinoM)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Markus Pfitzner (janus)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Hanna Podewski (kristin)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Matthias Krüger</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Hebrew"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Solomon Gruber (Piql7)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Hungarian"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Dániel Varga (EuroF)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Italian"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Gabriel Rota</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Polish"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Januzi (januzi)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Andrzej Krentosz (Endrju)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Jacek Wolszczak (Shutdownrunner)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Stanisław Gackowski (Soeb)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Russian"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Alexander Bikmeyev (Rombal)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Slovak"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Vladímir Tóth (Ike)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Spanish"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Antonio Trueba(Fasser)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Swedish"
-"</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Daniel Nylander (yeager)</p></rt>"
-"<rt image=pics/fsel_editor_set_height.png image-align=left text-align=left><p font-size=12>Frederik Pettersson (luno)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Packagers"
-"</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=bold font-face=serif font-color=f4a131>"
-""
-_ "Linux Distributions"
-"</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>Debian</p></rt>"
-"<rt><p font-size=12>Martin Quinson</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>Fedora</p></rt>"
-"<rt><p font-size=12>Karol Trzcionka</p></rt>"
-"<rt><p font-size=12>Jochen Wiedmann</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>Mandriva </p></rt>"
-"<rt><p font-size=12>Emmanuel Andry (eandry)</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=bold font-face=serif font-color=f4a131>"
-""
-_ "Other Unix Distributions"
-"</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>FreeBSD</p></rt>"
-"<rt><p font-size=12>Bartosz Fabianowski</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>Mac OS X</p></rt>"
-"<rt><p font-size=12>Philipp Engelhard</p></rt>"
-"<rt><p font-size=12>Pierre Salagnac (Tarou)</p></rt>"
-"<rt><p font-size=12>Wolf St. Kappesser</p></rt>"
-"<rt><p font-size=12>David Allwicher (aber)</p></rt>"
-"<rt text-align=left><p font-size=18 font-decoration=bold font-face=serif font-color=f4a131>"
-""
-_ "Non Unix Distributions"
-"</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>Win32 </p></rt>"
-"<rt><p font-size=12>Tino Miegel (TinoM)</p></rt>"
-"<rt><p font-size=12>Alexander Kahl (Wolfpac)</p></rt>"
-"<rt><p font-size=12>Geodomus</p></rt>"
-"<rt><p font-size=12>Jari Hautio</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>ZetaOS </p></rt>"
-"<rt><p font-size=12>BeSman</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Homepage Coders"
-"</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Holger Rapp (SirVer)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Stanislaw Gackowski (Soeb)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Markus Pfitzner (janus)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Tobi</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>franku (kaputtnik)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Documentation, Help and Wiki"
-"</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Erik Sigra (sigra)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Florian Falkner (foldrian)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Florian Weber (bedouin)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Nicolai Haehnle</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Holger Rapp (SirVer)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Johannes (nuefke)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Alexander Kahl (wolfpac)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Stanislaw Gackowski (Soeb)</p></rt>"
-"<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>Hanna Podewski (kristin)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-""
-_ "Former elders"
-"</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Homepage"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>holymoly</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>Stuart Eglington (DaaL1973)</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>Jon Harris (jonsjava)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Graphics"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>Salamander</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>Alexia Death (death)</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>Chuck Wilder (chuckw)</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Sound"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>Yannick Warnier</p></rt>"
-"<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>"
-""
-_ "Translation"
-"</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>Peter Schwanemann (Nasenbaer)</p></rt>"
-"<rt image=pics/genstats_enable_plr_04.png image-align=left text-align=left><p font-size=12>Philipp Niemann (Azagtoth)</p></rt>"
-"<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131><br>"
-""
-""
-_ "Other"
-"</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Matt Howe (mdhowe)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> Samuel Tilly (eldamar)</p></rt>"
-"<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12> and many, many more (thank you for everything you've done)</p></rt>""
+include "scripting/formatting.lua"
+
+set_textdomain("texts")
+
+-- Data for people categories
+
+local coders = {
+	"Holger Rapp (SirVer)",
+	"Nicolai Hähnle (ixprefect)",
+	"Florian Bluemel",
+	"Florian Falkner (foldrian)",
+	"Florian Weber (Bedouin)",
+	"Philipp Engelhard",
+	"Stefan Boettner",
+	"Tron",
+	"Martin Quinson",
+	"Raul Ferriz",
+	"Willem Jan Palenstijn",
+	"Josef Spillner",
+	"Christof Petig",
+	"Erik Sigra (sigra)",
+	"Nanne Wams",
+	"Surgery",
+	"Andrius R. (knutux)",
+	"Jari Hautio (jarih)",
+	"Peter Schwanemann (Nasenbaer)",
+	"Victor Pelt (Dwarik)",
+	"Axel Gehlert (dunkelbrauer)",
+	"András Eisenberger (Kiscsirke)",
+	"Andi",
+	"Timo",
+	"Hannes",
+	"TimoW",
+	"Jens Beyer (Qcumber-some)",
+	"Andreas Breitschopp (ab-tools)",
+	"Joachim Breitner (nomeata)",
+	"Nizamov Shawkat",
+	"Carl-Philip Hänsch (carli)",
+	"Martin Prussak (martin)",
+	"David Allwicher (aber)",
+	"Nathan Peters (nathanpeters)",
+	"Leif Sandstede (lcsand)",
+	"Matthias Horne (shevonar)",
+	"Borim (borim)",
+	"Angelo Locritani (alocritani)",
+	"Gabriel Margiani (gamag)",
+	"Anthony J. Bentley (anthonyjbentley)",
+	"Peter Waller (iri)",
+	"Johannes Ebke (sirius-in4matiker)",
+	"Andreas Eriksson",
+	"Mark Scott",
+	"Teppo Mäenpää",
+	"Steven De Herdt",
+	"Charly Ghislain (cghislai)",
+	"Tino Miegel (TinoM)",
+	"Tibor Bamhor (tiborb95)",
+	"Ferdinand Thiessen (f-thiessen)",
+	"Willy Scheibel (willyscheibel)",
+	"Martin Schmidt (mars)",
+	"Simon Eilting",
+}
+
+local graphicians = {
+	"Albert Jasiowka",
+	"Holger Rapp (SirVer)",
+	"Marz",
+	"Philipp Engelhard",
+	"Yannick Warnier",
+	"Delia",
+	"Florian Neuerburg",
+	"Jerome Rosinski",
+	"Mats Olsson",
+	"Odin Omdal",
+	"Wolfgang Weidner",
+	"Andreas Baier",
+	"Juri Chomé",
+	"Toralf Bethke (bithunter32)",
+	"Peter Schwanemann (Nasenbaer)",
+	"Alexia Death",
+	"Repsa Jih",
+	"Geoffroy Schmitlin (Trimard)",
+	"Benedikt Freisen (Objpaswriter)",
+	"Stefano Guidoni (Ilguido)",
+	"Samith Sandanayake (samithdisal)",
+	"Chuck Wilder (chuckw)",
+	"Astuur",
+	"Gerrit Familiegrosskopf (kingcreole)",
+	"Florian Angermeier (fraang)"
+}
+
+local musicians = {
+	"Kristian",
+	"MiddleFinger",
+	"Valerio Orlandini (Symbiosis)",
+	"Barry van Oudtshoorn (barryvan)",
+	"Jan Bruns (Solatis)",
+	"Nikola Whallon (Saturn)",
+	"Joshua O'Leary (Joshun)"
+}
+
+local sound_people = {
+	"Stefan de Konik",
+	"Peter Schwanemann (Nasenbaer)",
+	"Stephan",
+	"Adam Piggott (_aD)",
+	"Stanisław Gackowski (Soeb)"
+}
+
+local map_creators = {
+	"Michal Szopa (Winterwind)",
+	"Jan-Henrik Kluth (Isch)",
+	"Peter Schwanemann (Nasenbaer)",
+	"Sven (deviant)",
+	"Tuxlands",
+	"Kamil Wilczek (Another Barbarian)",
+	"Tarvo Reim (Tarrei)",
+	"Manuel Holzmeier (Quappo)",
+	"ivh",
+	"Hanna Podewski (kristin)",
+	"Teppo Mäenpää",
+	"fk",
+	"Einstein13",
+	"Jenia",
+	"Robnick"
+}
+
+local campaign_authors = {
+	{
+		_"Tutorials",
+		{
+			"wl-zocker"
+		}
+	},
+	{
+		_"Barbarian",
+		{
+			"Bastian Rapp",
+			"Alexander Kahl (wolfpac)",
+			"Peter Schwanemann (Nasenbaer)"
+		}
+	},
+	{
+		_"Empire",
+		{
+			"Peter Schwanemann (Nasenbaer)"
+		}
+	},
+	{
+		_"Atlantean",
+		{
+			"Holger Rapp (SirVer)",
+			"Peter Schwanemann (Nasenbaer)"
+		}
+	}
+}
+
+local homepage_authors = {
+	{
+		_"Homepage Coders",
+		{
+			"Holger Rapp (SirVer)",
+			"Stanislaw Gackowski (Soeb)",
+			"Markus Pfitzner (janus)",
+			"Tobi"
+		}
+	},
+	{
+		_"Documentation, Help and Wiki",
+		{
+			"Erik Sigra (sigra)",
+			"Florian Falkner (foldrian)",
+			"Florian Weber (bedouin)",
+			"Nicolai Haehnle",
+			"Holger Rapp (SirVer)",
+			"Johannes (nuefke)",
+			"Alexander Kahl (wolfpac)",
+			"Stanislaw Gackowski (Soeb)",
+			"Hanna Podewski (kristin)"
+		}
+	}
+}
+
+local packagers_linux = {
+	{
+		"Debian",
+		{
+			"Martin Quinson"
+		}
+	},
+	{
+		"Fedora",
+		{
+			"Karol Trzcionka",
+			"Jochen Wiedmann"
+		}
+	},
+	{
+		"Mandriva",
+		{
+			"Emmanuel Andry (eandry)"
+		}
+	}
+}
+
+local packagers_unix = {
+	{
+		"FreeBSD",
+		{
+			"Bartosz Fabianowski"
+		}
+	},
+	{
+		"Mac OS X",
+		{
+			"Philipp Engelhard",
+			"Pierre Salagnac (Tarou)",
+			"Wolf St. Kappesser",
+			"David Allwicher (aber)"
+		}
+	}
+}
+
+local packagers_other = {
+	{
+		"Windows",
+		{
+			"Tino Miegel (TinoM)",
+			"Alexander Kahl (Wolfpac)",
+			"Geodomus",
+			"Jari Hautio"
+		}
+	},
+	{
+		"ZetaOS",
+		{
+			"BeSman"
+		}
+	}
+}
+
+local chieftains = {
+   "Holger Rapp (SirVer)"
+}
+
+
+local elders = {
+	{
+		_"Graphics",
+		{
+			_"vacant"
+		}
+	},
+	{
+		_"Homepage",
+		{
+			"Markus Pfitzner (janus)"
+		}
+	},
+	{
+		_"Sound",
+		{
+			"Jan Bruns (solatis)"
+		}
+	},
+	{
+		_"Tongues",
+		{
+			"GunChleoc"
+		}
+	}
+}
+
+
+local former_elders = {
+	{
+		_"Homepage",
+		{
+			"holymoly",
+			"Stuart Eglington (DaaL1973)",
+			"Jon Harris (jonsjava)"
+		}
+	},
+	{
+		_"Graphics",
+		{
+			"Salamander",
+			"Alexia Death (death)",
+			"Chuck Wilder (chuckw)"
+		}
+	},
+	{
+		_"Sound",
+		{
+			"Yannick Warnier",
+		}
+	},
+	{
+		_"Translation",
+		{
+			"Peter Schwanemann (Nasenbaer)",
+			"Philipp Niemann (Azagtoth)"
+		}
+	}
+}
+
+
+local other_authors = {
+	"Matt Howe (mdhowe)",
+	"Samuel Tilly (eldamar)",
+	"and many, many more (thank you for everything you've done)"
+}
+
+-- Formatting functions
+
+function h1_authors(text)
+	return "<rt text-align=left><p font-size=24 font-decoration=bold font-face=serif font-color=f4a131>" .. text .. "</p></rt>"
+end
+
+function chieftain(text)
+	return "<rt image=pics/genstats_enable_plr_01.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function elder(text)
+	return "<rt image=pics/genstats_enable_plr_04.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function coder(text)
+	return "<rt image=pics/genstats_nrwares.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function graphician(text)
+	return "<rt image=pics/genstats_nrbuildings.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function musician(text)
+	return "<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function sound(text)
+	return "<rt image=pics/workarea123.png image-align=left text-align=left><p font-size=12>".. text .. "</p></rt>"
+end
+
+function maps(text)
+	return "<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12>".. text .. "</p></rt>"
+end
+
+function campaigns(text)
+	return "<rt image=pics/ls_wlmap.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function packager(text)
+	return "<rt><p font-size=18 font-decoration=underline font-face=serif font-color=2F9131>" .. text .. "</p></rt>"
+end
+
+function homepage(text)
+	return "<rt image=pics/WL-Editor-16.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function former_elder(text)
+	return "<rt image=pics/genstats_enable_plr_04.png text-align=left image-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+function others(text)
+	return "<rt image=pics/genstats_landsize.png image-align=left text-align=left><p font-size=12>" .. text .. "</p></rt>"
+end
+
+-- Lists people in the people_list array
+-- and formats each with format_function
+function list_people(people_list, format_function)
+		local result = ""
+		for i, person in ipairs(people_list) do
+		   result = result .. format_function(person)
+		end
+		return result
+end
+
+function list_people_with_header(header_and_people_list, header_format_function, format_function)
+		local result = ""
+		for i, entry in ipairs(header_and_people_list) do
+			result = result .. "<rt>" .. header_format_function(entry[1]) .. "</rt>"
+			for i, person in ipairs(entry[2])  do
+			   result = result .. format_function(person)
+		   end
+		end
+		return result
+end
+
+
+-- Main script
+return {
+   title = _"Authors",
+   text = rt(
+		"<rt text-align=center><p font-size=28 font-decoration=bold font-face=serif font-color=2F9131>" .. _"Widelands Development Team" .. "</p></rt>" ..
+
+		h1_authors(_"Chieftain") ..
+		list_people(chieftains, chieftain) ..
+
+		h1_authors(_"Elders") ..
+		list_people_with_header(elders, h2, elder) ..
+
+		h1_authors(_"Coders") ..
+		-- NOCOM(GunChleoc): Update
+		list_people(coders, coder) ..
+
+		h1_authors(_"Graphicians") ..
+		list_people(graphicians, graphician) ..
+
+		h1_authors(_"Musicians") ..
+		list_people(musicians, musician) ..
+
+		h1_authors(_"Sound Effects") ..
+		list_people(sound_people, sound) ..
+
+		h1_authors(_"Maps and Missions") ..
+		list_people(map_creators, maps) ..
+
+		h1_authors(_"Campaign Story") ..
+		list_people_with_header(campaign_authors, h2, campaigns) ..
+
+		h1_authors(_"Translators") ..
+		"%s" .. -- Place holder to insert translators list, which is parsed in C++.
+
+		h1_authors(_"Packagers") ..
+		h2(_"Linux Distributions") ..
+		list_people_with_header(packagers_linux, h3, packager) ..
+		h2(_"Other Unix Distributions") ..
+		list_people_with_header(packagers_unix, h3, packager) ..
+		h2(_"Non Unix Distributions") ..
+		list_people_with_header(packagers_other, h3, packager) ..
+
+		h1_authors(_"Homepage") ..
+		list_people_with_header(homepage_authors, h2, homepage) ..
+
+		h1_authors(_"Former Elders") ..
+		list_people_with_header(former_elders, h2, former_elder) ..
+
+		h1_authors(_"Other") ..
+		list_people(other_authors, others)
+	)
+}

=== renamed file 'txts/license' => 'txts/LICENSE.lua'
--- txts/license	2014-10-16 11:43:11 +0000
+++ txts/LICENSE.lua	2015-02-20 21:55:24 +0000
@@ -1,23 +1,41 @@
-title=_ "License"
-text=_ """
-"<rt text-align=center><p font-size=38 font-face=serif font-color=2F9131>"
-_"Licensing information for Widelands"
-"</p></rt>"
-"<rt><p font-size=14><br><br>"
-_"Copyright 2002 - 2014 by the Widelands Development Team."
-"<br>"
-_"This game is Free and Open Source (FOSS), licensed under the GNU General Public License (GPL) V2.0."
-"</p><p font-size=12 line-spacing=3><br><br>"
-_"You can find more information on FOSS and the GPL by visiting the following webpage: "
-_"http://www.gnu.org/licenses/old-licenses/gpl-2.0";
-"<br>"
-_"You can find the full text of the license there as well as further information about its philosophy and the legal implications."
-"<br><br>"
-_"We are also shipping the GPL as a text document with Widelands itself."
-"<br>"
-_"On Linux, you can find the file called COPYING in the root of the source or standalone binary package, or in the installation directory (like /usr/share/games/widelands)."
-_"On Windows, you can find the file called COPYING.txt in the installation folder, and the Widelands Start menu entry provides a link to this file."
-_"On MacOS, you can find the file called COPYING in the archive you downloaded from the website."
-"<br><br></p><p font-size=14>"
-_"This game comes as-is and without any warranty. For more information and support you can find us at http://wl.widelands.org (Website, Wiki, Forum for questions or general support) or https://launchpad.net/widelands (Bugtracker, Translations)."
-"</p></rt>""
+include "scripting/formatting.lua"
+
+set_textdomain("texts")
+
+function a(text)
+	return "</p><p font-size=14 font-decoration=underline>" .. text
+end
+
+function a2(text)
+	return "</p><p font-size=14 font-decoration=underline>" .. text .. "</p><p font-size=14 color=ff4444>"
+end
+
+function i(text)
+	return "</p><p font-size=14 font-style=italic>" .. text
+end
+
+return {
+   title = _"License",
+   text = rt(
+		"<rt text-align=center><p font-size=28 font-decoration=bold font-face=serif font-color=2F9131>" .. _"Licensing information for Widelands" .. "</p></rt>" ..
+
+		"<rt><p font-size=14><br><br>" ..
+		_"Copyright 2002 - 2014 by the Widelands Development Team." .. "<br>" ..
+		_"This game is Free and Open Source (FOSS), licensed under the GNU General Public License (GPL) V2.0." .. "<br><br></p>" ..
+
+		p(_"You can find more information on FOSS and the GPL by visiting the following webpage:  %s"):bformat(a("http://www.gnu.org/licenses/old-licenses/gpl-2.0";)) ..
+		p(_"You can find the full text of the license there as well as further information about its philosophy and the legal implications.") ..
+
+		p(_"We are also shipping the GPL as a text document with Widelands itself.") ..
+		p(_"On Linux, you can find the file called COPYING in the root of the source or standalone binary package, or in the installation directory (like ‘%1%’)."):bformat(i("/usr/share/games/widelands")) ..
+		p(_"On Windows, you can find the file called COPYING.txt in the installation folder, and the Widelands Start menu entry provides a link to this file.") ..
+		p(_"On MacOS, you can find the file called COPYING in the archive you downloaded from the website.") ..
+
+		"<p font-size=14 color=ff4444>" .. (_"This game comes as-is and without any warranty. For more information and support you can find us at %1% (Website, Wiki, Forum for questions or general support), %2% (Bugtracker), and %3% (Translations)."):
+			bformat(
+				a2("http://wl.widelands.org";),
+				a2("https://launchpad.net/widelands";),
+				a2("https://www.transifex.com/projects/p/widelands/";))
+			.. "</p>"
+	)
+}

=== renamed file 'txts/editor_readme' => 'txts/editor_readme.lua'
--- txts/editor_readme	2014-10-16 11:43:11 +0000
+++ txts/editor_readme.lua	2015-02-20 21:55:24 +0000
@@ -1,47 +1,53 @@
-title=_ README for the Widelands Editor
-text=_ ""<rt image=pics/WL-Editor-64.png image-align=center text-align=center><p></p></rt>"
-""<rt text-align=center><p font-size=38 font-color=2F9131>"
-_"README for the Editor"
-"</p></rt>"
-"<rt><p font-size=14 font-style=italic text-align=center><br><br>"
-_"Introduction"
-"</p></rt>"
-"<rt><p line-spacing=3 font-size=12>"
-_"This Editor is intended for players who would like to design their own maps to use with Widelands.<br>As you can see, this Editor is heavy work in progress and as the Editor becomes better and better, this text will also get longer and more complete."
-"<br><br>"
-_"Please have a look at our enduser manuals on our wiki pages at:"
-"<br>   http://wl.widelands.org/wiki<br>"
-_"Those pages might be more complete and up to date than this file, and you will also find a short tutorial about building a map there."
-"<br><br><br>"
-"</p>"
-"<p font-size=14 font-style=italic text-align=center>"
-_"Keyboard shortcuts"
-"</p>"
-"<p line-spacing=3 font-size=12><br>"
-_"SPACE: toggles if building spaces are shown"
-"<br>"
-_"C: toggles census"
-"<br>"
-_"F: toggles fullscreen"
-"<br>"
-_"H: toggles main menu"
-"<br>"
-_"M: toggles minimap"
-"<br>"
-_"P: toggles player menu"
-"<br>"
-_"T: toggles tools menu"
-"<br>"
-_"I: activates information tool"
-"<br>"
-_"CTRL+L: load map"
-"<br>"
-_"CTRL+S: save map"
-"<br><br>"
-_"1-0: changes tool size"
-"<br>"
-_"SHIFT (Hold): selects first alternative tool while pressed"
-"<br>"
-_"ALT (Hold): Selects second alternative tool while pressed"
-"<br>"
-"</p></rt>""
+include "scripting/formatting.lua"
+
+set_textdomain("texts")
+
+function a(text)
+	return "</p><p font-size=14 font-decoration=underline>" .. text
+end
+
+return {
+   title = _"README for the Widelands Editor",
+   text = rt(
+		"<rt><p font-size=38 font-color=2F9131>" .. _[[The Widelands Editor]] .. "<br><br></p>" ..
+
+		h1(_"Introduction") ..
+
+		p(_"This editor is intended for players who would like to design their own maps to use with Widelands. As you can see, this Editor is heavy work in progress and as the Editor becomes better and better, this text will also get longer and more complete.") ..
+		p(_"This Editor is intended for players who would like to design their own maps to use with Widelands.") ..
+		p(_"As you can see, this Editor is heavy work in progress and as the Editor becomes better and better, this text will also get longer and more complete.") ..
+		p(_"Please have a look at our enduser manuals on our wiki pages at: %s"):bformat(a("http://wl.widelands.org/wiki";)) ..
+		p(_"Those pages might be more complete and up to date than this file, and you will also find a short tutorial about building a map there.") ..
+
+		h1(_"Keyboard shortcuts") ..
+
+		p(
+			-- TRANSLATORS: This is a hotkey
+			_"SPACE:" .. " " .. _"toggles if building spaces are shown" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"C:" .. " " .. _"toggles census" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"F:" .. " " .. _"toggles fullscreen" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"H:" .. " " .. _"toggles main menu" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"M:" .. " " .. _"toggles minimap" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"P:" .. " " .. _"toggles player menu" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"T:" .. " " .. _"toggles tools menu" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"I:" .. " " .. _"activates information tool" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"CTRL+L:" .. " " .. _"load map" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"CTRL+S:" .. " " .. _"save map" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"1-0:" .. " " .. _"changes tool size" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"SHIFT (Hold):" .. " " .. _"selects first alternative tool while pressed" .. "<br>" ..
+			-- TRANSLATORS: This is a hotkey
+			_"ALT (Hold):" .. " " .. _"Selects second alternative tool while pressed" .. "<br>"
+		)
+	)
+}


Follow ups