bool Localization::LoadSet(const std::string& name) { const std::string path = name + "_" + App::GetLanguageSymbol() + ".translations.xml"; XMLDocument doc; if (!doc.Load(path)) { Log::Error("Failed to load localization set from " + path); return false; } XMLNode* translationsNode = doc.AsNode()->GetFirstNode("translations"); if (!translationsNode) { Log::Error("Failed to find 'translationSet' node in " + path); return false; } // Load groups for (XMLNode* groupNode = XMLNode_GetFirstNode(translationsNode, "group"); groupNode; groupNode = XMLNode_GetNext(groupNode, "group")) { const std::string groupName = XMLNode_GetAttributeValue(groupNode, "name"); // Load translations for (XMLNode* translationNode = XMLNode_GetFirstNode(groupNode, "translation"); translationNode; translationNode = XMLNode_GetNext(translationNode, "translation")) { const std::string translationName = XMLNode_GetAttributeValue(translationNode, "name"); const char* value = XMLNode_GetAttributeValue(translationNode, "value"); const std::string fullName = name + "." + groupName + "." + translationName; g_strings[fullName] = value; } } return true; }