using Galactic_Colors_Control_Common.Protocol; using System; using System.Collections.Generic; using System.Linq; namespace Galactic_Colors_Control_Common { public class MultiLang { private Dictionary> _multiDictionary = new Dictionary>(); //List of phrases by key private List _Langs = new List(); //Readable langs list public Dictionary> multiDictionary { get { return _multiDictionary; } } public List Langs { get { return _Langs; } } public void Load() { _multiDictionary.Clear(); _Langs.Clear(); string[] lines = Properties.Resources.Lang.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries); //Load from .cvs ressources. //TODO add more langs _Langs = lines[0].Split(';').OfType().ToList(); _Langs.RemoveAt(0); foreach (string line in lines) { List items = line.Split(';').OfType().ToList(); string key = items[0]; items.RemoveAt(0); _multiDictionary.Add(key, items); } } public string GetEventText(EventData eve, int lang) { string data = Common.ArrayToString(eve.data); switch (eve.type) { case EventTypes.ChatMessage: return data; case EventTypes.PartyJoin: case EventTypes.PartyLeave: case EventTypes.ServerJoin: case EventTypes.ServerLeave: return data + " " + Get(eve.type.ToString(), lang); default: return eve.ToSmallString(); } } public string GetResultText(ResultData res, int lang) { string data = Common.ArrayToString(res.result); if (res.type == ResultTypes.Error) data = Get("Error", lang) + ": " + data; return data; } public string Get(string Key, int Lang) { string text = ""; if (_multiDictionary.ContainsKey(Key)) { if (_multiDictionary[Key].Count >= Lang) { text = _multiDictionary[Key][Lang]; } else { text = "!!!UNKNOW LANG KEY!!!"; } } else { text = "!!!UNKNOW WORD KEY!!!"; } return text; } } }