123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #include "stdafx.h"
- #include "MultiLang.h"
- void MultiLang::GetCStringByKey(int grpKey,int itmKey,CString& text,CString& des)
- {
- text = resGroup[grpKey].mapRes[itmKey].text;
- des= resGroup[grpKey].mapRes[itmKey].Description ;
- }
- CString MultiLang::GetCStringByKey(int grpKey, int itmKey)
- {
- return resGroup[grpKey].mapRes[itmKey].text;
- }
- CString MultiLang::GetGroupTextByKey(int grpKey)
- {
- return resGroup[grpKey].text;
- }
- void MultiLang::GetGroupTextByKey(int grpKey, CString& text, CString& des)
- {
- text= resGroup[grpKey].text;
- des = resGroup[grpKey].Description;
- }
- void MultiLang::SetCStringByKey(int grpkey,int itmkey, CString value,CString des)
- {
- StringRes sr;
- sr.text = value;
- sr.Description = des;
- resGroup[grpkey].mapRes [itmkey]=sr;
- }
- 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 *subcollectionNode = collectionNode->FirstChildElement("collection");
- while (subcollectionNode != NULL)
- {
- int colkey;
- colkey=std::stoi(subcollectionNode->Attribute("grpKey"));
- CString colText;
- colText = subcollectionNode->Attribute("text");
- CString colDes;
- colDes = subcollectionNode->Attribute("description");
- tinyxml2::XMLElement *memberNode;
- ResGroup rg;
- rg.key = colkey;
- rg.text = colText;
- rg.Description = colDes;
- memberNode = subcollectionNode->FirstChildElement("member");
- while (memberNode != NULL)
- {
- xmls::xString itemKey;
- xmls::xString itemText;
- xmls::xString itemName;
- xmls::xString itemDes;
- xmls::Slo slo;
- slo.Register("itemKey", &itemKey);
- slo.Register("itemText", &itemText);
- slo.Register("itemName", &itemName);
- slo.Register("description", &itemDes);
- slo.Serialize(false, doc, memberNode);
- int key = std::stoi(itemKey.value().c_str());
- CString itmtext = itemText.value().c_str();
- CString itmName = itemName.value().c_str();
- CString itmDes = itemDes.value().c_str();
- StringRes sr;
- sr.key = key;
- sr.text = itmtext;
- sr.Description = itmDes;
- rg.mapRes[key] = sr;
-
- memberNode = memberNode->NextSiblingElement("member");
- }
- resGroup[colkey] = rg;
- subcollectionNode = subcollectionNode->NextSiblingElement("collection");
- }
-
- delete doc;
- return true;
- }
- bool MultiLang::SaveStringToXml()
- {
- //tinyxml2::XMLDocument* doc = new tinyxml2::XMLDocument();
- //doc->LoadFile(".\\OPTON\\OTSIncA\\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(".\\OPTON\\OTSIncA\\SysData\\MultiLangForCpp.xml");
- //delete doc;
- return true;
- }
|