public override object Clone() { StrItemList sil = new StrItemList(); foreach (StrToken si in this) { sil.Add(si); } return(sil); }
/// <summary> /// Returns all Langugae specific Strings, if the String is not included in the passed /// Language the Fallback String (use en) will be returned /// </summary> /// <param name="l">the Language</param> /// <returns>List of Strings</returns> public StrItemList FallbackedLanguageItems(Data.MetaData.Languages l) { if (l == Data.MetaData.Languages.English) { return(this.LanguageItems(l)); } StrItemList real = (StrItemList)LanguageItems(l).Clone(); StrItemList fallback = null; if (this.Languages.Contains(Data.MetaData.Languages.English)) { fallback = LanguageItems(Data.MetaData.Languages.English); } else if (this.Languages.Count == 1) { fallback = LanguageItems(Languages[0]); } else { fallback = LanguageItems(Data.MetaData.Languages.English); } for (int i = 0; i < fallback.Length; i++) { if (real.Length <= i) { real.Add(fallback[i]); } else if ((real[i] == null) || (real[i].Title.Trim() == "")) { real[i] = fallback[i]; } } return(real); }