X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=tools%2Flocale-builder%2FCultureInfoEntry.cs;h=f03d93a8366fb4dbc91f2a7d5eab6877cbe99c72;hb=7f95267f8ad64a4766c3e337c8c5a466b0b52dc1;hp=b6448e687aa92982462b16a955633ee48c1029c6;hpb=0abc2e6270020edc4a5b4c66f93b4ae582815f20;p=mono.git diff --git a/tools/locale-builder/CultureInfoEntry.cs b/tools/locale-builder/CultureInfoEntry.cs index b6448e687aa..f03d93a8366 100644 --- a/tools/locale-builder/CultureInfoEntry.cs +++ b/tools/locale-builder/CultureInfoEntry.cs @@ -10,87 +10,135 @@ 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 (); + } + } -namespace Mono.Tools.LocaleBuilder { - - public class CultureInfoEntry : Entry { - - public string Language; - public string Territory; - public string EnglishName; - public string DisplayName; - public string NativeName; - public string IcuName; - public string Win3Lang; - public string ISO2Lang; - public string ISO3Lang; - public string Lcid; - public string ParentLcid; - public string SpecificLcid; - public DateTimeFormatEntry DateTimeFormatEntry; - public NumberFormatEntry NumberFormatEntry; - public TextInfoEntry TextInfoEntry; - public int [] CalendarData = new int [5]; - public int DateTimeIndex; - public int NumberIndex; - - - public int Row; - - public CultureInfoEntry () - { - DateTimeFormatEntry = new DateTimeFormatEntry (); - NumberFormatEntry = new NumberFormatEntry (); - } - - public string Name { - get { - if (Territory == null) - return Language; - return Language + "-" + Territory; - } - } - - public override string ToString () - { - StringBuilder builder = new StringBuilder (); - AppendTableRow (builder); - return builder.ToString (); - } - - public void AppendTableRow (StringBuilder builder) - { - builder.Append ("\t{"); - builder.AppendFormat ("{0}, {1}, {2}, " + - "{3}, {4}, {5}, " + - "{6}, {7}, {8}, " + - "{9}, {10}, " + - "{11}, " + - "{12}, {13}, {14}", - Lcid, ParentLcid, SpecificLcid, - EncodeStringIdx (Name), EncodeStringIdx (IcuName), EncodeStringIdx (EnglishName), - EncodeStringIdx (DisplayName), EncodeStringIdx (NativeName), EncodeStringIdx (Win3Lang), - EncodeStringIdx (ISO3Lang), EncodeStringIdx (ISO2Lang), - ValuesString (CalendarData), - DateTimeFormatEntry == null ? -1 : DateTimeFormatEntry.Row, - NumberFormatEntry == null ? -1 : NumberFormatEntry.Row, - TextInfoEntry.ToString ()); - builder.Append ('}'); - } - - private string ValuesString (int [] values) - { - StringBuilder builder = new StringBuilder (); - builder.Append ('{'); - for (int i=0; i