X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=tools%2Flocale-builder%2FDriver.cs;h=52586043f241713ffeb53948ee225b67cc290485;hb=c0ba6dca416db15e7919fe775d29b9cf0124a611;hp=3f851f17f59dd1042a3f881496f63ac0faf781c2;hpb=b39d5edf62fb3908e10647e1a7e60dadeb88b2be;p=mono.git diff --git a/tools/locale-builder/Driver.cs b/tools/locale-builder/Driver.cs index 3f851f17f59..52586043f24 100644 --- a/tools/locale-builder/Driver.cs +++ b/tools/locale-builder/Driver.cs @@ -523,6 +523,8 @@ namespace Mono.Tools.LocaleBuilder { df.MonthNames.Clear (); df.MonthNames.Add (ni2.Current.Value); } + if (df.MonthNames.Count == 12) + df.MonthNames.Add (String.Empty); ni2 = (XPathNodeIterator) ni.Current.Evaluate ("dayNames/day"); while (ni2.MoveNext ()) { @@ -544,6 +546,8 @@ namespace Mono.Tools.LocaleBuilder { df.AbbreviatedMonthNames.Clear (); df.AbbreviatedMonthNames.Add (ni2.Current.Value); } + if (df.AbbreviatedMonthNames.Count == 12) + df.AbbreviatedMonthNames.Add (String.Empty); ni2 = (XPathNodeIterator) ni.Current.Evaluate ("dateFormats/dateFormatLength"); while (ni2.MoveNext ()) { @@ -639,8 +643,8 @@ namespace Mono.Tools.LocaleBuilder { ni2 = (XPathNodeIterator) ni.Current.Evaluate ("dateTimeFormats/dateTimeFormatLength/dateTimeFormat/pattern"); if (ni2.MoveNext ()) - df.FullDateTimePattern = String.Format (ni2.Current.ToString (), - df.LongTimePattern, df.LongDatePattern); + df.RawFullDateTimePattern = ni2.Current.ToString ();/*String.Format (ni2.Current.ToString (), + df.LongTimePattern, df.LongDatePattern);*/ XPathNodeIterator am = ni.Current.SelectChildren ("am", ""); if (am.MoveNext ()) @@ -1071,7 +1075,7 @@ namespace Mono.Tools.LocaleBuilder { } } - static string control_chars = "ghmsftz"; + static string control_chars = "eghmsftz"; // HACK: We are trying to build year_month and month_day patterns from the full pattern. private void ParseFullDateFormat (DateTimeFormatEntry df, string full) @@ -1081,8 +1085,9 @@ namespace Mono.Tools.LocaleBuilder { string year_month = String.Empty; bool in_month_data = false; bool in_year_data = false; - int month_end = 0; - int year_end = 0; + int day_start = 0, day_end = 0; + int month_start = 0, month_end = 0; + int year_start = 0, year_end = 0; bool inquote = false; for (int i = 0; i < full.Length; i++) { @@ -1092,18 +1097,24 @@ namespace Mono.Tools.LocaleBuilder { year_month += c; in_year_data = true; in_month_data = true; - month_end = month_day.Length; + if (month_start == 0) + month_start = i; + month_end = i; year_end = year_month.Length; } else if (!inquote && Char.ToLower (c) == 'd') { month_day += c; in_month_data = true; in_year_data = false; - month_end = month_day.Length; + if (day_start == 0) + day_start = i; + day_end = i; } else if (!inquote && Char.ToLower (c) == 'y') { year_month += c; in_year_data = true; in_month_data = false; - year_end = year_month.Length; + if (year_start == 0) + year_start = i; + year_end = i; } else if (!inquote && control_chars.IndexOf (Char.ToLower (c)) >= 0) { in_year_data = false; in_month_data = false; @@ -1120,15 +1131,35 @@ namespace Mono.Tools.LocaleBuilder { } if (month_day != String.Empty) { - month_day = month_day.Substring (0, month_end); - df.MonthDayPattern = month_day; + //month_day = month_day.Substring (0, month_end); + df.MonthDayPattern = TrimPattern (month_day); } if (year_month != String.Empty) { - year_month = year_month.Substring (0, year_end); - df.YearMonthPattern = year_month; + //year_month = year_month.Substring (0, year_end); + df.YearMonthPattern = TrimPattern (year_month); } } + string TrimPattern (string p) + { + int idx = 0; + p = p.Trim ().TrimEnd (','); + idx = p.LastIndexOf ("' de '"); // spanish dates + if (idx > 0) + p = p.Substring (0, idx); + idx = p.LastIndexOf ("' ta '"); // finnish + if (idx > 0) + p = p.Substring (0, idx); + idx = p.LastIndexOf ("'ren'"); // euskara + if (idx > 0) + p = p.Replace ("'ren'", "").Trim (); + idx = p.LastIndexOf ("'a'"); // estonian + if (idx > 0) + p = p.Substring (0, idx); + + return p.Replace ("'ta '", "'ta'"); // finnish + } + private class LcidComparer : IComparer { public int Compare (object a, object b) @@ -1147,7 +1178,7 @@ namespace Mono.Tools.LocaleBuilder { CultureInfoEntry aa = (CultureInfoEntry) a; CultureInfoEntry bb = (CultureInfoEntry) b; - return aa.Name.ToLower ().CompareTo (bb.Name.ToLower ()); + return String.CompareOrdinal(aa.Name.ToLower (), bb.Name.ToLower ()); } }