@@ -45,10 +45,20 @@ private bool LoadCalendarDataFromSystem(String localeName, CalendarId calendarId
4545 result &= EnumCalendarInfo ( localeName , calendarId , CalendarDataType . DayNames , out this . saDayNames ) ;
4646 result &= EnumCalendarInfo ( localeName , calendarId , CalendarDataType . AbbrevDayNames , out this . saAbbrevDayNames ) ;
4747 result &= EnumCalendarInfo ( localeName , calendarId , CalendarDataType . SuperShortDayNames , out this . saSuperShortDayNames ) ;
48- result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . MonthNames , out this . saMonthNames ) ;
49- result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . AbbrevMonthNames , out this . saAbbrevMonthNames ) ;
50- result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . MonthGenitiveNames , out this . saMonthGenitiveNames ) ;
51- result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . AbbrevMonthGenitiveNames , out this . saAbbrevMonthGenitiveNames ) ;
48+
49+ string leapHebrewMonthName = null ;
50+ result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . MonthNames , out this . saMonthNames , ref leapHebrewMonthName ) ;
51+ if ( leapHebrewMonthName != null )
52+ {
53+ // In Hebrew calendar, get the leap month name Adar II and override the non-leap month 7
54+ Debug . Assert ( calendarId == CalendarId . HEBREW && saMonthNames . Length == 13 ) ;
55+ saLeapYearMonthNames = ( string [ ] ) saMonthNames . Clone ( ) ;
56+ saLeapYearMonthNames [ 6 ] = leapHebrewMonthName ;
57+ }
58+ result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . AbbrevMonthNames , out this . saAbbrevMonthNames , ref leapHebrewMonthName ) ;
59+ result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . MonthGenitiveNames , out this . saMonthGenitiveNames , ref leapHebrewMonthName ) ;
60+ result &= EnumMonthNames ( localeName , calendarId , CalendarDataType . AbbrevMonthGenitiveNames , out this . saAbbrevMonthGenitiveNames , ref leapHebrewMonthName ) ;
61+
5262 result &= EnumEraNames ( localeName , calendarId , CalendarDataType . EraNames , out this . saEraNames ) ;
5363 result &= EnumEraNames ( localeName , calendarId , CalendarDataType . AbbrevEraNames , out this . saAbbrevEraNames ) ;
5464
@@ -241,7 +251,7 @@ private static int CountOccurrences(string input, char value, ref int index)
241251 return index - startIndex ;
242252 }
243253
244- private static bool EnumMonthNames ( string localeName , CalendarId calendarId , CalendarDataType dataType , out string [ ] monthNames )
254+ private static bool EnumMonthNames ( string localeName , CalendarId calendarId , CalendarDataType dataType , out string [ ] monthNames , ref string leapHebrewMonthName )
245255 {
246256 monthNames = null ;
247257
@@ -257,6 +267,17 @@ private static bool EnumMonthNames(string localeName, CalendarId calendarId, Cal
257267 callbackContext . Results . Add ( string . Empty ) ;
258268 }
259269
270+ if ( callbackContext . Results . Count > 13 )
271+ {
272+ Debug . Assert ( calendarId == CalendarId . HEBREW && callbackContext . Results . Count == 14 ) ;
273+
274+ if ( calendarId == CalendarId . HEBREW )
275+ {
276+ leapHebrewMonthName = callbackContext . Results [ 13 ] ;
277+ }
278+ callbackContext . Results . RemoveRange ( 13 , callbackContext . Results . Count - 13 ) ;
279+ }
280+
260281 monthNames = callbackContext . Results . ToArray ( ) ;
261282 }
262283
0 commit comments