Mercurial > sumwars
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) {