Exemplo n.º 1
0
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;
}