X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=tools%2Flocale-builder%2FCultureInfoEntry.cs;h=f03d93a8366fb4dbc91f2a7d5eab6877cbe99c72;hb=d231b5134decb9f2303be441a119ca552b51d0e1;hp=9a13d306f5bf19c4ded841c9a9194ec338cd1004;hpb=7ff8f29ff29fa3f08ef305ac43ef079097323286;p=mono.git diff --git a/tools/locale-builder/CultureInfoEntry.cs b/tools/locale-builder/CultureInfoEntry.cs index 9a13d306f5b..f03d93a8366 100644 --- a/tools/locale-builder/CultureInfoEntry.cs +++ b/tools/locale-builder/CultureInfoEntry.cs @@ -10,85 +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 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}", - Lcid, ParentLcid, SpecificLcid, - EncodeString (Name), EncodeString (IcuName), EncodeString (EnglishName), - EncodeString (DisplayName), EncodeString (NativeName), EncodeString (Win3Lang), - EncodeString (ISO3Lang), EncodeString (ISO2Lang), - ValuesString (CalendarData), - DateTimeFormatEntry == null ? -1 : DateTimeFormatEntry.Row, - NumberFormatEntry == null ? -1 : NumberFormatEntry.Row); - builder.Append ('}'); - } - - private string ValuesString (int [] values) - { - StringBuilder builder = new StringBuilder (); - builder.Append ('{'); - for (int i=0; i