// // Mono.Tools.LocaleBuilder.CultureInfoEntry // // Author(s): // Jackson Harper (jackson@ximian.com) // // (C) 2004 Novell, Inc (http://www.novell.com) // using System; using System.Text; using System.Collections.Generic; using System.Globalization; namespace Mono.Tools.LocaleBuilder { public class CultureInfoEntry : Entry { string language; public string Script; public string Territory; public string EnglishName; public string DisplayName; public string NativeName; public string ThreeLetterWindowsLanguageName; public string TwoLetterISOLanguageName; public string ThreeLetterISOLanguageName; public string LCID; public string ParentLcid; public string SpecificLcid; public RegionInfoEntry RegionInfoEntry; public DateTimeFormatEntry DateTimeFormatEntry; public NumberFormatEntry NumberFormatEntry; public TextInfoEntry TextInfoEntry; public int DateTimeIndex; public int NumberIndex; public string NativeCurrencyName; public string NativeTerritoryName; public string[] NativeCalendarNames = new string[Constants.NUM_CALENDARS]; public CalendarType CalendarType; public GregorianCalendarTypes GregorianCalendarType; public List Children = new List (); public int Row; public CultureInfoEntry () { DateTimeFormatEntry = new DateTimeFormatEntry (); NumberFormatEntry = new NumberFormatEntry (); } public string Language { get { return language; } set { language = value; } } public bool HasMissingLocale { get; set; } public bool IsNeutral { get { return Territory == null; } } public string OriginalName { get; set; } public CultureInfoEntry Parent { get; set; } public string Name { get { string s = language; if (Script != null) s = s + "-" + Script; if (Territory != null) s = s + "-" + Territory; return s; } } public string GetExportName () { return OriginalName.Replace ('_', '-'); } public override string ToString () { StringBuilder builder = new StringBuilder (); AppendTableRow (builder); return builder.ToString (); } public void AppendTableRow (StringBuilder builder) { builder.Append ("\t{"); builder.Append (LCID).Append (", "); builder.Append (ParentLcid).Append (", "); int calendar_type = (int) CalendarType; calendar_type <<= 8; if (CalendarType == CalendarType.Gregorian) calendar_type |= (int) GregorianCalendarType; builder.Append (calendar_type).Append (", "); builder.Append (RegionInfoEntry == null ? -1 : RegionInfoEntry.Index).Append (", "); builder.Append (EncodeStringIdx (GetExportName ())).Append (", "); builder.Append (EncodeStringIdx (EnglishName)).Append (", "); builder.Append (EncodeStringIdx (NativeName)).Append (", "); builder.Append (EncodeStringIdx (ThreeLetterWindowsLanguageName)).Append (", "); builder.Append (EncodeStringIdx (ThreeLetterISOLanguageName)).Append (", "); builder.Append (EncodeStringIdx (TwoLetterISOLanguageName)).Append (", "); builder.Append (EncodeStringIdx (Territory)).Append (", "); AppendNames (builder, NativeCalendarNames).Append (", "); builder.Append (DateTimeFormatEntry.Row).Append (", "); builder.Append (NumberFormatEntry.Row).Append (", "); builder.Append (TextInfoEntry.ToString ()); builder.Append ('}'); } private string ValuesString (int[] values) { StringBuilder builder = new StringBuilder (); builder.Append ('{'); for (int i = 0; i < values.Length; i++) { builder.Append (values[i].ToString ()); if (i + 1 < values.Length) builder.Append (", "); } builder.Append ("}"); return builder.ToString (); } } }