// Creates and registers card data for each card class
 static bool Prefix(ref LanguageSourceData __instance)
 {
     return(true);
 }
Пример #2
0
        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();
        }