using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Text.RegularExpressions; namespace EduNetworkBuilder { public class LanguageString { public string text=""; public string language="en"; public string tag_type; public LanguageString(string lang, string msg, string tag) { text = msg; language = lang; tag_type = tag; } public LanguageString(XmlNode theNode, string tag) { XmlNodeType myNodetype = theNode.NodeType; if (myNodetype == XmlNodeType.Element) { if(Regex.IsMatch(theNode.Name.ToLower(),"^[a-z][a-z]_" + tag)) { //We have a language, and then a message text = theNode.InnerText; language = Regex.Replace(theNode.Name.ToLower(), "_" + tag, ""); } else { //It is just a message. Use the default language. language = "en"; text = theNode.InnerText; } } tag_type = tag; } public void Save(XmlWriter writer) { writer.WriteElementString(language+"_" + tag_type, text); } } public class LanguageStrings { List TheStrings = new List(); string tag = ""; /// /// Make a language string list of type: "message", "title" /// /// Should be of type "message" or "title" public LanguageStrings(string type) { tag = type; } public void Add(XmlNode theNode) { LanguageString oneString = new LanguageString(theNode, tag); //remove duplicates for (int i = TheStrings.Count - 1; i >= 0; i--) { if (TheStrings[i].language == oneString.language) { TheStrings.RemoveAt(i); } } TheStrings.Add(oneString); } public void Add(string Text) { LanguageString oneString = new LanguageString(Properties.Settings.Default.ChosenLanguage,Text,tag); //remove duplicates for (int i = TheStrings.Count - 1; i >= 0; i--) { if (TheStrings[i].language == oneString.language) { TheStrings.RemoveAt(i); } } TheStrings.Add(oneString); } public void Save(XmlWriter writer) { foreach(LanguageString LS in TheStrings) { LS.Save(writer); } } public string GetText(string language) { //Find the matching language foreach(LanguageString LS in TheStrings) { if(LS.language == language) { return LS.text; } } //Return the english version if one exists if(language != "en") { return GetText("en"); } //return the first language (if the puzzle is only in french, use that.) if (TheStrings.Count > 0) return TheStrings[0].text; //If there is no language, return a blank message return ""; } public string GetText() { return GetText(Properties.Settings.Default.ChosenLanguage); } } }