| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #include "stdafx.h"
- #include "MultiLang.h"
- std::string MultiLang::GetStringByKey(int key)
- {
- return mapMultiLang[key];
- }
- CString& MultiLang::GetCStringByKey(int key)
- {
- //std::string ss = mapMultiLang[key];
- //return CString(ss.c_str());
- return mapMultiLang[key];
- }
- void MultiLang::OutputCStringByKey(int key, CString& outStr)
- {
- //std::string ss = mapMultiLang[key];
- //return CString(ss.c_str());
- outStr= mapMultiLang[key];
- }
- void MultiLang::SetStringByKey(int key, std::string value)
- {
- mapMultiLang[key] = value.c_str();
- }
- bool MultiLang::LoadStringFromXml()
- {
- tinyxml2::XMLDocument* doc=new tinyxml2::XMLDocument ();
- /*char buf[1000];
- GetCurrentDirectory(1000, buf);
- CString dir = CString(buf);*/
- doc->LoadFile(".\\Resources\\XMLData\\LanguageDefine.xml");//载入xml文件
- tinyxml2::XMLElement *rootNode;
- rootNode = doc->FirstChildElement("Language");
- tinyxml2::XMLElement *childNode = rootNode->FirstChildElement("DefaultLanguage");
- std::string ss=childNode->GetText();
- if (ss == "EN")
- {
- doc->LoadFile(".\\Resources\\XMLData\\ResourceForCpp\\ResourceForCpp-EN.xml");//载入xml文件
- }
- else if (ss == "ZH")
- {
- doc->LoadFile(".\\Resources\\XMLData\\ResourceForCpp\\ResourceForCpp-ZH.xml");//载入xml文件
- }
-
- rootNode = doc->FirstChildElement(RootClassName);
-
- tinyxml2::XMLElement *collectionNode = rootNode->FirstChildElement("collection");
- tinyxml2::XMLElement *memberNode;
- memberNode = collectionNode->FirstChildElement("member");
- while (memberNode != NULL)
- {
- xmls::xString itemKey;
- xmls::xString itemText;
- xmls::xString itemName;
- xmls::Slo slo;
- slo.Register("itemKey", &itemKey);
- slo.Register("itemText", &itemText);
- slo.Register("itemName", &itemName);
- slo.Serialize(false, doc, memberNode);
- int key = std::atoi(itemKey.c_str ());
- mapMultiLang[key] = itemText.value().c_str();
- memberNode = memberNode->NextSiblingElement("member");
- }
- delete doc;
- return true;
- }
- bool MultiLang::SaveStringToXml()
- {
- tinyxml2::XMLDocument* doc = new tinyxml2::XMLDocument();
- doc->LoadFile(".\\Config\\SysData\\MultiLangForCpp.xml");//载入xml文件
- tinyxml2::XMLElement *rootNode;
- rootNode = doc->FirstChildElement(RootClassName);
- tinyxml2::XMLElement *collectionNode = rootNode->FirstChildElement("collection");
-
- for (auto member:mapMultiLang)
- {
- xmls::xString itemKey;
- xmls::xString itemText;
- xmls::xString itemName;
- xmls::Slo slo;
- slo.Register("itemKey", &itemKey);
- slo.Register("itemText", &itemText);
- slo.Register("itemName", &itemName);
- itemKey =std::to_string( member.first);
- itemText = member.second;
- itemName = "";
- tinyxml2::XMLElement *subClassNode = doc->NewElement("member");
- slo.Serialize(true, doc, subClassNode);
- collectionNode->InsertEndChild(subClassNode);
- }
-
- doc->SaveFile(".\\Config\\SysData\\MultiLangForCpp.xml");
- delete doc;
- return true;
- }
|