internal Language(LocaleData data) { LanguageCode = data.LanguageCode; Fullname = data.FullLangName; Mapping = data.Language; ReverseMapping = new Dictionary <string, int>(); RedefinitionMapping = new Dictionary <int, int>(); foreach (KeyValuePair <int, string> item in Mapping) { if (ReverseMapping.ContainsKey(item.Value)) { RedefinitionMapping.Add(item.Key, ReverseMapping[item.Value]); } else { ReverseMapping.Add(item.Value, item.Key); } } }
private static LocaleData ParseLangFile(string filePath) { try { string completeName = Path.GetFileNameWithoutExtension(filePath); int first = completeName.IndexOf('-', 0); int second = completeName.IndexOf('-', first + 1); if (second == -1) { second = completeName.Length; } string mainLangCode = completeName.Substring(0, second); LocaleData data = new LocaleData { Language = new Dictionary <int, string>(), LanguageCode = mainLangCode }; using (StreamReader reader = File.OpenText(filePath)) { Regex regex = new Regex(@"(-?\d+):(.+)"); while (!reader.EndOfStream) { string line = reader.ReadLine(); if (line.StartsWith("#") || string.IsNullOrEmpty(line)) { continue; } if (line.StartsWith("/")) { data.FullLangName = line.Substring(1); continue; } Match match = regex.Match(line); data.Language.Add(int.Parse(match.Groups[1].Value), match.Groups[2].Value); } } return(data); } catch { return(null); } }