public TranslationStringReference CreateNamedString(string _prefix, LangFile file, ITranslationEntry entry, ref Dictionary <string, int> unnamedCount, string clang) { var prefix = _prefix.Length > 0 ? _prefix + "_" : ""; var id = entry.Identifier?.Process(); var idNumbered = id; var type = string.IsNullOrWhiteSpace(entry.EntryType?.Text) ? "UNNAMED" : entry.EntryType.Text; if (string.IsNullOrEmpty(id) || id == "-1" || id == "IDC_STATIC") { var type_id = $"{type}_{id}"; int count; unnamedCount.TryGetValue(type_id, out count); id = $"{type}_{id}_{count++}"; idNumbered = $"{prefix}{id}#0"; unnamedCount[type] = count + 1; } int number = 0; while (NamedStrings.ContainsKey(idNumbered)) { number++; idNumbered = $"{prefix}{id}#{number}"; } return(new TranslationStringReference() { Id = idNumbered, Language = clang, Source = file, Entry = entry }); }
private TranslationStringReference AddNamedString(string prefix, LangFile file, ITranslationEntry entry, ref Dictionary <string, int> unnamedCount, string clang, string nlang, TranslationStringReference parent) { SubLang sl; if (!SubLangs.TryGetValue(clang, out sl)) { sl = new SubLang() { Source = file, Name = clang, Neutral = nlang }; SubLangs.Add(clang, sl); } var stl = sl.AddNamedString(prefix, file, entry, ref unnamedCount, clang); TranslationString ns; if (!NamedStringsByName.TryGetValue(stl.Id, out ns)) { ns = new TranslationString { Name = stl.Id, Parent = parent?.String }; NamedStrings.Add(ns); NamedStringsByName.Add(stl.Id, ns); } ns.Lines.Add(stl); ns.Translations.Add(stl.Language, stl); stl.String = ns; return(stl); }
public TranslationStringReference AddNamedString(string prefix, LangFile file, ITranslationEntry entry, ref Dictionary <string, int> unnamedCount, string clang) { var sl = CreateNamedString(prefix, file, entry, ref unnamedCount, clang); NamedStrings.Add(sl.Id, sl); References.Add(sl); if (!file.ContainedLangs.Contains(this)) { file.ContainedLangs.Add(this); } file.NamedLines.Add(entry.Context.Line, sl); return(sl); }