예제 #1
0
        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
            });
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
 private TranslationStringReference ProcessEntry(string prefix, LangFile file, ITranslationEntry entry, ref Dictionary <string, int> unnamedCount, string clang, string nlang, TranslationStringReference parent)
 {
     return(AddNamedString(prefix, file, entry, ref unnamedCount, clang, nlang, parent));
 }