private void CheckDuplicateAdd(LangStringStore t) { //are we skipping this string Id for some reason ? foreach (long it in SkippedIds) { if (it == t.StringId) { return; } } //should we skip this string as already present ? foreach (LangStringStore it in LangStrings) { if (t.LangId == it.LangId && t.Context == it.Context && t.Str == it.Str && t.LangId == LangIdEnum.LangIdEnglish) { Globals.Logger.LogString(LogManager.LogLevels.LogFlagInfo, "Duplicate translation for string: " + t.Str + ". Skipping id " + t.StringId.ToString() + " Assign a context for it ?"); SkippedIds.Add(t.StringId); return; } if (t.StringId == it.StringId && t.Context == it.Context && t.LangId == it.LangId) { Globals.Logger.LogString(LogManager.LogLevels.LogFlagInfo, "Duplicate StringId for string: " + t.Str + ". Skipping " + t.StringId.ToString() + " Assign a new id for it ?"); return; } } LangStrings.Add(t); }
public void LoadDBFromFile(string FileName) { //ditch old content if there was any LangStrings.Clear(); // file name is normal ? if (FileName == null || FileName.Length == 0) { return; } // can't load unexisting file if (File.Exists(FileName) == false) { return; } SkippedIds.Clear(); //load the data we will use to translate the UI var lines = File.ReadLines(FileName); foreach (var line in lines) { if (line.Length <= 1 || line[0] == '/' || line[0] == '\n') { continue; } try { LangStringStore t = new LangStringStore(); int ValEnd1 = line.IndexOf('\t'); t.StringId = Int32.Parse(line.Substring(0, ValEnd1 - 0)); int ValEnd2 = line.IndexOf('\t', ValEnd1 + 1); t.Context = Int32.Parse(line.Substring(ValEnd1 + 1, ValEnd2 - ValEnd1 - 1)); int ValEnd3 = line.IndexOf('\t', ValEnd2 + 1); t.LangId = (LangIdEnum)Int32.Parse(line.Substring(ValEnd2 + 1, ValEnd3 - ValEnd2 - 1)); t.Str = line.Substring(ValEnd3 + 1); CheckDuplicateAdd(t); } catch { } } }