private static bool EnumMonthNames(string localeName, CalendarId calendarId, CalendarDataType dataType, out string[]?monthNames, ref string?leapHebrewMonthName) { monthNames = null; IcuEnumCalendarsData callbackContext = default; callbackContext.Results = new List <string>(); bool result = EnumCalendarInfo(localeName, calendarId, dataType, ref callbackContext); if (result) { // the month-name arrays are expected to have 13 elements. If ICU only returns 12, add an // extra empty string to fill the array. if (callbackContext.Results.Count == 12) { callbackContext.Results.Add(string.Empty); } if (callbackContext.Results.Count > 13) { Debug.Assert(calendarId == CalendarId.HEBREW && callbackContext.Results.Count == 14); if (calendarId == CalendarId.HEBREW) { leapHebrewMonthName = callbackContext.Results[13]; } callbackContext.Results.RemoveRange(13, callbackContext.Results.Count - 13); } monthNames = callbackContext.Results.ToArray(); } return(result); }
private static bool EnumDatePatterns(string localeName, CalendarId calendarId, CalendarDataType dataType, out string[]?datePatterns) { datePatterns = null; IcuEnumCalendarsData callbackContext = default; callbackContext.Results = new List <string>(); callbackContext.DisallowDuplicates = true; bool result = EnumCalendarInfo(localeName, calendarId, dataType, ref callbackContext); if (result) { List <string> datePatternsList = callbackContext.Results; for (int i = 0; i < datePatternsList.Count; i++) { datePatternsList[i] = NormalizeDatePattern(datePatternsList[i]); } if (dataType == CalendarDataType.ShortDates) { FixDefaultShortDatePattern(datePatternsList); } datePatterns = datePatternsList.ToArray(); } return(result); }