internal override LocalizedString When()
        {
            LocalizedString result;

            if (Recurrence.IsGregorianCompatible(this.CalendarType))
            {
                if (base.RecurrenceObjectType == RecurrenceObjectType.CalendarRecurrence)
                {
                    result = ClientStrings.CalendarWhenYearly(new LocalizedMonth(this.month), this.DayOfMonth);
                }
                else
                {
                    result = ClientStrings.TaskWhenYearly(new LocalizedMonth(this.month), this.DayOfMonth);
                }
            }
            else if (this.IsLeapMonth)
            {
                if (base.RecurrenceObjectType == RecurrenceObjectType.CalendarRecurrence)
                {
                    result = ClientStrings.AlternateCalendarWhenYearlyLeap(Recurrence.GetCalendarName(this.CalendarType), this.month, this.DayOfMonth);
                }
                else
                {
                    result = ClientStrings.AlternateCalendarTaskWhenYearlyLeap(Recurrence.GetCalendarName(this.CalendarType), this.month, this.DayOfMonth);
                }
            }
            else if (base.RecurrenceObjectType == RecurrenceObjectType.CalendarRecurrence)
            {
                result = ClientStrings.AlternateCalendarWhenYearly(Recurrence.GetCalendarName(this.CalendarType), this.month, this.DayOfMonth);
            }
            else
            {
                result = ClientStrings.AlternateCalendarTaskWhenYearly(Recurrence.GetCalendarName(this.CalendarType), this.month, this.DayOfMonth);
            }
            return(result);
        }