internal IReadOnlyList <TranslationUnit> GetQuestionSubgroupTranslationUnits(Question question, LocalizableStringType type) { switch (type) { case LocalizableStringType.Alternate: case LocalizableStringType.Answer: case LocalizableStringType.Note: UIDataString key = new UIQuestionDataString(question, true, false); return(Localizations.FindQuestionGroup(key)?.GetQuestionSubGroup(type)?.TranslationUnits); default: throw new ArgumentOutOfRangeException(); } }
internal TranslationUnit GetTranslationUnit(UIDataString key) { switch (key.Type) { case LocalizableStringType.Category: return(Localizations.Categories.TranslationUnits.FirstOrDefault(tu => tu.English == key.SourceUIString)); case LocalizableStringType.SectionHeading: return(Localizations.Groups.FirstOrDefault(g => g.Id == FileBody.GetSectionId(key))?.TranslationUnits.Single()); case LocalizableStringType.Question: return(Localizations.FindQuestionGroup(key)?.TranslationUnits.Single()); case LocalizableStringType.Alternate: case LocalizableStringType.Answer: case LocalizableStringType.Note: return(Localizations.FindQuestionGroup(key)?.GetQuestionSubGroup(key.Type)?.TranslationUnits.SingleOrDefault(tu => tu.English == key.SourceUIString)); default: throw new ArgumentOutOfRangeException(); } }
internal TranslationUnit GetLocalizableStringInfo(UIDataString key) { if (String.IsNullOrWhiteSpace(key?.SourceUIString)) { return(null); } if (key.Type == LocalizableStringType.Category) { return(Localizations.Categories.TranslationUnits.SingleOrDefault(tu => tu.English == key.SourceUIString)); } if (key.Type == LocalizableStringType.SectionHeading) { return(Localizations.Groups.SingleOrDefault(g => g.Id == FileBody.GetSectionId(key))?.TranslationUnits?.Single()); } var question = Localizations.FindQuestionGroup(key); if (question == null) { return(null); } switch (key.Type) { case LocalizableStringType.Question: return(question.TranslationUnits?.SingleOrDefault()); case LocalizableStringType.Answer: case LocalizableStringType.Note: case LocalizableStringType.Alternate: return(question.GetQuestionSubGroup(key.Type)?. TranslationUnits.SingleOrDefault(tu => tu.English == key.SourceUIString)); default: throw new Exception("Unhandled type!"); } }