// Creates and registers card data for each card class static bool Prefix(ref LanguageSourceData __instance) { return(true); }
static void ExtractRemaining(LanguageSourceAsset[] langSource, ref DT2.TranslationDatabase output) { //find a language source with English strings LanguageSourceData englishSource = null; int englishIndex = -1; //iterate over sources foreach (var source in langSource) { //only search miscellaneous sources if (!source.name.Contains("General")) { continue; } //skip if English unavailable int index = source.mSource.GetLanguageIndex("English"); if (index != -1) { englishSource = source.mSource; englishIndex = index; break; } } //initialize type-specific dictionary foreach (KeyValuePair <string, string> kvp in typeDictionary) { if (!output.miscellaneous.ContainsKey(kvp.Value)) { output.miscellaneous.Add(kvp.Value, new Dictionary <string, string>()); } } output.miscellaneous.Add("misc", new Dictionary <string, string>()); //extract remaining terms foreach (var term in englishSource.mTerms) { //skip entries covered by conversations and empty entries if (term.Term.StartsWith("Conversation/")) { continue; } if (string.IsNullOrWhiteSpace(term.Languages[englishIndex])) { continue; } //detect special types string entryType = "misc"; foreach (KeyValuePair <string, string> kvp in typeDictionary) { if (term.Term.StartsWith(kvp.Key)) { entryType = kvp.Value; break; } } //skip redundant actor entries if (entryType == "actors" && char.IsDigit(term.Term, 26)) { continue; } //add entry to database output.miscellaneous[entryType].Add(term.Term, term.Languages[englishIndex]); } }
private void ParseSchedule() { LanguageSourceData sourceData = I2.Loc.LocalizationManager.Sources[0]; categoriesList = new List <string>(); categoriesList = sourceData.GetCategories(); streamCategoriesList = categoriesList.FindAll(x => x.StartsWith(categoryMainName)); foreach (string streamCategory in streamCategoriesList) { termsList.AddRange(sourceData.GetTermsList(streamCategory)); } termsList.Sort(); string key; string category; foreach (string term in termsList) { key = ""; category = ""; LanguageSourceData.DeserializeFullTerm(term, out key, out category); string[] subCategories = category.Split('/'); int streamId = 0; foreach (string item in subCategories) { if (item.StartsWith(categoryStreamName)) { int.TryParse(item.Substring(categoryStreamName.Length), out streamId); } } ExpoScheduledStreamItem scheduledItem = scheduledItems.Find(x => x.category == category); bool isNew = false; if (scheduledItem == null) { isNew = true; scheduledItem = new ExpoScheduledStreamItem(); scheduledItem.StreamId = streamId; scheduledItem.category = category; } if (key == keyRoom) { // Room name is equal to Timetable Tab names scheduledItem.Room = sourceData.GetTranslation(term); } else if (key == keyDayId) { int dayIdParse = 0; if (!int.TryParse(sourceData.GetTranslation(term), out dayIdParse)) { dayIdParse = 0; } scheduledItem.DayId = dayIdParse; } else if (key == keyStartTime) { string dateString = sourceData.GetTranslation(term); dateString = dateString.Replace("GMT", "").Replace(" (PDT)", "").Replace(" (PST)", "").Replace(" (PT)", ""); dateString = dateString.Insert(dateString.Length - 2, ":"); scheduledItem.StartTime = System.DateTime.ParseExact(dateString, dateFormat, System.Globalization.CultureInfo.InvariantCulture); scheduledItem.StartTimeString = scheduledItem.StartTime.ToString(); scheduledItem.Date = scheduledItem.StartTime.ToLocalTime().Date; scheduledItem.DateString = scheduledItem.Date.ToShortDateString(); } else if (key == keyEndTime) { string dateString = sourceData.GetTranslation(term); dateString = dateString.Replace("GMT", "").Replace(" (PDT)", "").Replace(" (PST)", "").Replace(" (PT)", ""); dateString = dateString.Insert(dateString.Length - 2, ":"); scheduledItem.EndTime = System.DateTime.ParseExact(dateString, dateFormat, System.Globalization.CultureInfo.InvariantCulture); scheduledItem.EndTimeString = scheduledItem.EndTime.ToString(); } else if (key == keyTitle) { scheduledItem.Title = sourceData.GetTranslation(term); } else if (key == keyDescription) { scheduledItem.Description = sourceData.GetTranslation(term); } else if (key == keySpeakersName) { scheduledItem.SpeakersName = sourceData.GetTranslation(term); } else if (key == keySpeakersPosition) { scheduledItem.SpeakersPosition = sourceData.GetTranslation(term); } else if (key == keySpeakersPhoto) { scheduledItem.SpeakersPhoto = sourceData.GetTranslation(term); } else if (key == keyFormat) { scheduledItem.Format = sourceData.GetTranslation(term); } else if (key == keyURL) { scheduledItem.URL = sourceData.GetTranslation(term); } if (isNew) { scheduledItems.Add(scheduledItem); } } scheduledItems = scheduledItems.OrderBy(x => x.StartTime).ToList(); }