MultiLang.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. #include "stdafx.h"
  2. #include "MultiLang.h"
  3. void MultiLang::GetCStringByKey(int grpKey,int itmKey,CString& text,CString& des)
  4. {
  5. text = resGroup[grpKey].mapRes[itmKey].text;
  6. des= resGroup[grpKey].mapRes[itmKey].Description ;
  7. }
  8. CString MultiLang::GetCStringByKey(int grpKey, int itmKey)
  9. {
  10. return resGroup[grpKey].mapRes[itmKey].text;
  11. }
  12. CString MultiLang::GetGroupTextByKey(int grpKey)
  13. {
  14. return resGroup[grpKey].text;
  15. }
  16. void MultiLang::GetGroupTextByKey(int grpKey, CString& text, CString& des)
  17. {
  18. text= resGroup[grpKey].text;
  19. des = resGroup[grpKey].Description;
  20. }
  21. void MultiLang::SetCStringByKey(int grpkey,int itmkey, CString value,CString des)
  22. {
  23. StringRes sr;
  24. sr.text = value;
  25. sr.Description = des;
  26. resGroup[grpkey].mapRes [itmkey]=sr;
  27. }
  28. bool MultiLang::LoadStringFromXml()
  29. {
  30. tinyxml2::XMLDocument* doc=new tinyxml2::XMLDocument ();
  31. /*char buf[1000];
  32. GetCurrentDirectory(1000, buf);
  33. CString dir = CString(buf);*/
  34. doc->LoadFile(".\\Resources\\XMLData\\LanguageDefine.xml");//载入xml文件
  35. tinyxml2::XMLElement *rootNode;
  36. rootNode = doc->FirstChildElement("Language");
  37. tinyxml2::XMLElement *childNode = rootNode->FirstChildElement("DefaultLanguage");
  38. std::string ss=childNode->GetText();
  39. if (ss == "EN")
  40. {
  41. doc->LoadFile(".\\Resources\\XMLData\\ResourceForCpp\\ResourceForCpp-EN.xml");//载入xml文件
  42. }
  43. else if (ss == "ZH")
  44. {
  45. doc->LoadFile(".\\Resources\\XMLData\\ResourceForCpp\\ResourceForCpp-ZH.xml");//载入xml文件
  46. }
  47. rootNode = doc->FirstChildElement(RootClassName);
  48. tinyxml2::XMLElement *collectionNode = rootNode->FirstChildElement("collection");
  49. tinyxml2::XMLElement *subcollectionNode = collectionNode->FirstChildElement("collection");
  50. while (subcollectionNode != NULL)
  51. {
  52. int colkey;
  53. colkey=std::stoi(subcollectionNode->Attribute("grpKey"));
  54. CString colText;
  55. colText = subcollectionNode->Attribute("text");
  56. CString colDes;
  57. colDes = subcollectionNode->Attribute("description");
  58. tinyxml2::XMLElement *memberNode;
  59. ResGroup rg;
  60. rg.key = colkey;
  61. rg.text = colText;
  62. rg.Description = colDes;
  63. memberNode = subcollectionNode->FirstChildElement("member");
  64. while (memberNode != NULL)
  65. {
  66. xmls::xString itemKey;
  67. xmls::xString itemText;
  68. xmls::xString itemName;
  69. xmls::xString itemDes;
  70. xmls::Slo slo;
  71. slo.Register("itemKey", &itemKey);
  72. slo.Register("itemText", &itemText);
  73. slo.Register("itemName", &itemName);
  74. slo.Register("description", &itemDes);
  75. slo.Serialize(false, doc, memberNode);
  76. int key = std::stoi(itemKey.value().c_str());
  77. CString itmtext = itemText.value().c_str();
  78. CString itmName = itemName.value().c_str();
  79. CString itmDes = itemDes.value().c_str();
  80. StringRes sr;
  81. sr.key = key;
  82. sr.text = itmtext;
  83. sr.Description = itmDes;
  84. rg.mapRes[key] = sr;
  85. memberNode = memberNode->NextSiblingElement("member");
  86. }
  87. resGroup[colkey] = rg;
  88. subcollectionNode = subcollectionNode->NextSiblingElement("collection");
  89. }
  90. delete doc;
  91. return true;
  92. }
  93. bool MultiLang::SaveStringToXml()
  94. {
  95. //tinyxml2::XMLDocument* doc = new tinyxml2::XMLDocument();
  96. //doc->LoadFile(".\\OPTON\\OTSIncA\\SysData\\MultiLangForCpp.xml");//载入xml文件
  97. //tinyxml2::XMLElement *rootNode;
  98. //rootNode = doc->FirstChildElement(RootClassName);
  99. //tinyxml2::XMLElement *collectionNode = rootNode->FirstChildElement("collection");
  100. //
  101. //for (auto member:mapMultiLang)
  102. //{
  103. // xmls::xString itemKey;
  104. // xmls::xString itemText;
  105. // xmls::xString itemName;
  106. // xmls::Slo slo;
  107. // slo.Register("itemKey", &itemKey);
  108. // slo.Register("itemText", &itemText);
  109. // slo.Register("itemName", &itemName);
  110. // itemKey =std::to_string( member.first);
  111. // itemText = member.second;
  112. // itemName = "";
  113. // tinyxml2::XMLElement *subClassNode = doc->NewElement("member");
  114. // slo.Serialize(true, doc, subClassNode);
  115. // collectionNode->InsertEndChild(subClassNode);
  116. //}
  117. //
  118. //doc->SaveFile(".\\OPTON\\OTSIncA\\SysData\\MultiLangForCpp.xml");
  119. //delete doc;
  120. return true;
  121. }