Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }