예제 #1
0
        public override object Clone()
        {
            StrItemList sil = new StrItemList();

            foreach (StrToken si in this)
            {
                sil.Add(si);
            }

            return(sil);
        }
예제 #2
0
        /// <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);
        }