changeset 1684:455c7240a1df

fixed missing translation for quest description
author wuha
date Sat, 09 Apr 2011 19:04:07 +0000
parents d46ce0bc40d8
children e13d07874498
files src/core/quest.cpp src/core/quest.h src/core/world.cpp src/core/worldloader.cpp src/gui/questinfo.cpp
diffstat 5 files changed, 41 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/quest.cpp	Thu Apr 07 20:03:06 2011 +0000
+++ b/src/core/quest.cpp	Sat Apr 09 19:04:07 2011 +0000
@@ -1,7 +1,7 @@
 #include "quest.h"
 #include <libintl.h>
 
-Quest::Quest(std::string name, std::string table_name)
+Quest::Quest(TranslatableString name, std::string table_name)
 {
 	m_name = name;
 	m_table_name = table_name;
@@ -88,21 +88,27 @@
 
 std::string Quest::getDescription()
 {
+	EventSystem::pushGettextDomain(m_gettext_domain);
 	EventSystem::executeCodeReference(m_description);
 	
-	std::string ret = EventSystem::getReturnValue();
+	TranslatableString descr;
+	descr.setTextDomain(EventSystem::GetGettextDomain());
+	EventSystem::getTranslatableString(EventSystem::getLuaState(), descr, -1);
 	
-	return ret;
+	EventSystem::getReturnValue();
+	EventSystem::popGettextDomain();
+	
+	return descr.getTranslation();
 }
 
-std::string Quest::getName()
+TranslatableString Quest::getName()
 {
 	return m_name;
 }
 
 void Quest::toString(CharConv* cv)
 {
-	cv->toBuffer(m_name);
+	m_name.toString(cv);
 	cv->toBuffer(m_table_name);
 	cv->toBuffer(m_description_code);
 }
--- a/src/core/quest.h	Thu Apr 07 20:03:06 2011 +0000
+++ b/src/core/quest.h	Sat Apr 09 19:04:07 2011 +0000
@@ -27,12 +27,11 @@
 		};
 		
 		/**
-		 * \fn Quest(std::string name, std::string table_name)
 		 * \brief Konstruktor
 		 * \param name Name des Quests
 		 * \param table_name Name der Lua Tabelle in der die Variablen zu dem Quest gespeichert werden
 		 */
-		Quest(std::string name, std::string table_name);
+		Quest(TranslatableString name, std::string table_name);
 		
 		/**
 		 * \fn virtual ~Quest()
@@ -73,10 +72,9 @@
 		std::string getDescription();
 		
 		/**
-		 * \fn std::string getName()
 		 * \brief Gibt den Name aus
 		 */
-		std::string getName();
+		TranslatableString getName();
 		
 		/**
 		 * \fn void toString(CharConv* cv)
@@ -93,13 +91,20 @@
 		 */
 		virtual void fromString(CharConv* cv);
 		
+		/**
+		 * \brief Setzt die Gettextdomain
+		 */
+		void setGettextDomain(std::string gettext_domain)
+		{
+			m_gettext_domain = gettext_domain;
+		}
+		
 	
 	private:
 		/**
-	 	 * \var std::string m_name
-		 * \brief Name des Quests
+		 * \brief Name of the quest that is intended to be translated and displayed 
 		 */
-		std::string m_name;
+		TranslatableString m_name;
 		
 		/**
 		 * \var std::string m_table_name
@@ -127,6 +132,11 @@
 		 */
 		std::string m_description_code;
 		
+		/**
+		 * \brief gettext domain used for translating the description
+		 */
+		std::string m_gettext_domain;
+		
 };
 
 #endif
--- a/src/core/world.cpp	Thu Apr 07 20:03:06 2011 +0000
+++ b/src/core/world.cpp	Sat Apr 09 19:04:07 2011 +0000
@@ -1736,8 +1736,9 @@
 				}
 				else if (headerp.m_content == PTYPE_S2C_QUEST)
 				{
-					std::string name,tabname;
-					cv->fromBuffer(name);
+					TranslatableString name;
+					std::string tabname;
+					name.fromString(cv);
 					cv->fromBuffer(tabname);
 					DEBUGX("got data for quest %s %s",name.c_str(), tabname.c_str());
 
--- a/src/core/worldloader.cpp	Thu Apr 07 20:03:06 2011 +0000
+++ b/src/core/worldloader.cpp	Sat Apr 09 19:04:07 2011 +0000
@@ -515,16 +515,20 @@
 		ElementAttrib attr;
 		attr.parseElement(node->ToElement());
 		
-		std::string tabname,name;
+		std::string tabname, sname;
 		attr.getString("table_name",tabname);
-		attr.getString("name",name);
+		attr.getString("name",sname);
 	
 		std::string domain = EventSystem::GetGettextDomain();
 		attr.getString("domain",domain);
+		TranslatableString name;
+		name= sname;
+		name.setTextDomain(domain);
 		
 		EventSystem::pushGettextDomain(domain);
 		
 		qu = new Quest(name,tabname);
+		qu->setGettextDomain(domain);
 		
 		loadQuest(node,qu);
 		qu->init();
--- a/src/gui/questinfo.cpp	Thu Apr 07 20:03:06 2011 +0000
+++ b/src/gui/questinfo.cpp	Sat Apr 09 19:04:07 2011 +0000
@@ -122,12 +122,14 @@
 	CEGUI::ListboxItem* newitem;
 	for (it = quests.begin(); it != quests.end(); ++it)
 	{
+		Quest* quest = it->second;
 		state = it->second->getState();
 		if (state == Quest::STARTED && open || state == Quest::FINISHED && done || state == Quest::FAILED && failed)
 		{
-			newitem = new StrListItem(dgettext("sumwars",it->second->getName().c_str()),it->first);
+			CEGUI::utf8* name = (CEGUI::utf8*) quest->getName().getTranslation().c_str();
+			newitem = new StrListItem(name,it->first);
 			questlist->addItem(newitem);
-			DEBUGX("add quest %s %s",it->second->getName().c_str(),it->first.c_str());
+			DEBUGX("add quest %s %s",quest->getName().getTranslation().c_str(),it->first.c_str());
 			
 			if (it->first == m_questname)
 			{