Completed
Last Updated: 31 Jan 2024 11:39 by ADMIN
Release 2024 Q1 (2024.1.130)
Nicola
Created on: 03 Nov 2023 12:48
Category: Scheduler/Reminder
Type: Bug Report
1
RadScheduler: Reminder settings is not preserved with custom localization

If I set '2 Settimane' (2 Weeks in English)  and re-open the appointment it show '2 ore' (2 hours in English) or

If i set '4 giorni' (4 days in English)  and re-open the appointment it show '4 ore' (4 hours in English)

The code snippet reproduces the issue:

Public Class RadForm1
    Sub New()

        RadSchedulerLocalizationProvider.CurrentProvider = New ItalianSchedulerLocalizationProvider()
        InitializeComponent()

      

    End Sub
    Private Sub RadForm1_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized
        ' 
    End Sub
End Class
Public Class ItalianSchedulerLocalizationProvider
    Inherits RadSchedulerLocalizationProvider

    Public Overrides Function GetLocalizedString(id As String) As String
        Select Case id
            Case RadSchedulerStringId.NextAppointment
                Return "Prossimi Appuntamenti"
            Case RadSchedulerStringId.PreviousAppointment
                Return "Appuntamenti Precedenti"
            Case RadSchedulerStringId.AppointmentDialogTitle
                Return "Modifica Appuntamento"
            Case RadSchedulerStringId.AppointmentDialogSubject
                Return "Oggetto:"
            Case RadSchedulerStringId.AppointmentDialogLocation
                Return "Posizione:"
            Case RadSchedulerStringId.AppointmentDialogBackground
                Return "Sfondo:"
            Case RadSchedulerStringId.AppointmentDialogDescription
                Return "Descrizione:"
            Case RadSchedulerStringId.AppointmentDialogStartTime
                Return "Ora di inizio:"
            Case RadSchedulerStringId.AppointmentDialogEndTime
                Return "Ora di fine:"
            Case RadSchedulerStringId.AppointmentDialogAllDay
                Return "Tutto il giorno"
            Case RadSchedulerStringId.AppointmentDialogResource
                Return "Risorsa:"
            Case RadSchedulerStringId.AppointmentDialogStatus
                Return "Mostra come:"
            Case RadSchedulerStringId.AppointmentDialogOK
                Return "OK"
            Case RadSchedulerStringId.AppointmentDialogCancel
                Return "Annulla"
            Case RadSchedulerStringId.AppointmentDialogDelete
                Return "Elimina"
            Case RadSchedulerStringId.AppointmentDialogRecurrence
                Return "Ricorrenza"
            Case RadSchedulerStringId.OpenRecurringDialogTitle
                Return "Apri elemento ricorrente"
            Case RadSchedulerStringId.DeleteRecurrenceDialogOK
                Return "OK"
            Case RadSchedulerStringId.OpenRecurringDialogOK
                Return "OK"
            Case RadSchedulerStringId.DeleteRecurrenceDialogCancel
                Return "Annulla"
            Case RadSchedulerStringId.OpenRecurringDialogCancel
                Return "Annulla"
            Case RadSchedulerStringId.OpenRecurringDialogLabel
                Return """{0}"" è un appuntamento" & vbLf & "ricorrente. Vuoi aprire" & vbLf & "la sola occorenza o la serie?"
            Case RadSchedulerStringId.OpenRecurringDialogRadioOccurrence
                Return "Apri questa occorrenza."
            Case RadSchedulerStringId.OpenRecurringDialogRadioSeries
                Return "Apri la serie."
            Case RadSchedulerStringId.DeleteRecurrenceDialogTitle
                Return "Conferma cancellazione"
            Case RadSchedulerStringId.DeleteRecurrenceDialogRadioOccurrence
                Return "Elimina questa occorrenza."
            Case RadSchedulerStringId.DeleteRecurrenceDialogRadioSeries
                Return "Elimina la serie."
            Case RadSchedulerStringId.DeleteRecurrenceDialogLabel
                Return "Vuoi eliminare tutte le occorrenze dell'appuntamento ricorrente ""{0}"", o sola questa?"
            Case RadSchedulerStringId.RecurrenceDragDropCreateExceptionDialogText
                Return "Hai modificato la data di una singola occorrenza di un appuntamento ricorrente. Per modificare tutte le date, aprire la serie." & vbLf & "Vuoi cambiare solo questa?"
            Case RadSchedulerStringId.RecurrenceDragDropValidationSameDateText
                Return "Due occorrenze della stessa serie non possono verificarsi nello stesso giorno."
            Case RadSchedulerStringId.RecurrenceDragDropValidationSkipOccurrenceText
                Return "Non è possibile riprogrammare un'occorrenza di un appuntamento ricorrente se viene saltata un'occorrenza successiva dello stesso appuntamento."
            Case RadSchedulerStringId.RecurrenceDialogMessageBoxText
                Return "La data di inizio deve essere precedente alla data di fine."
            Case RadSchedulerStringId.RecurrenceDialogMessageBoxWrongRecurrenceRuleText
                Return "Il modello di ricorrenza non è valido."
            Case RadSchedulerStringId.RecurrenceDialogMessageBoxTitle
                Return "Errore di validazione"
            Case RadSchedulerStringId.RecurrenceDialogTitle
                Return "Modifica ricorrenza"
            Case RadSchedulerStringId.RecurrenceDialogAppointmentTimeGroup
                Return "Orario dell'appuntamento"
            Case RadSchedulerStringId.RecurrenceDialogDuration
                Return "Durata:"
            Case RadSchedulerStringId.RecurrenceDialogAppointmentEnd
                Return "Fine:"
            Case RadSchedulerStringId.RecurrenceDialogAppointmentStart
                Return "Inizio:"
            Case RadSchedulerStringId.RecurrenceDialogRecurrenceGroup
                Return "Modello di ricorrenza"
            Case RadSchedulerStringId.RecurrenceDialogRangeGroup
                Return "Intervallo di ricorrenza"
            Case RadSchedulerStringId.RecurrenceDialogOccurrences
                Return "occorrenze"
            Case RadSchedulerStringId.RecurrenceDialogRecurrenceStart
                Return "Inizio:"
            Case RadSchedulerStringId.RecurrenceDialogYearly
                Return "Annuale"
            Case RadSchedulerStringId.RecurrenceDialogHourly
                Return "Ora"
            Case RadSchedulerStringId.RecurrenceDialogMonthly
                Return "Mese"
            Case RadSchedulerStringId.RecurrenceDialogWeekly
                Return "Settimana"
            Case RadSchedulerStringId.RecurrenceDialogDaily
                Return "Giorno"
            Case RadSchedulerStringId.RecurrenceDialogEndBy
                Return "Fine entro:"
            Case RadSchedulerStringId.RecurrenceDialogEndAfter
                Return "Fine dopo:"
            Case RadSchedulerStringId.RecurrenceDialogNoEndDate
                Return "Nessuna data di fine"
            Case RadSchedulerStringId.RecurrenceDialogAllDay
                Return "Evento tutto il giorno"
            Case RadSchedulerStringId.RecurrenceDialogDurationDropDown1Day
                Return "1 giorno"
            Case RadSchedulerStringId.RecurrenceDialogDurationDropDown2Days
                Return "2 giorni"
            Case RadSchedulerStringId.RecurrenceDialogDurationDropDown3Days
                Return "3 giorni"
            Case RadSchedulerStringId.RecurrenceDialogDurationDropDown4Days
                Return "4 giorni"
            Case RadSchedulerStringId.RecurrenceDialogDurationDropDown1Week
                Return "1 settimana"
            Case RadSchedulerStringId.RecurrenceDialogDurationDropDown2Weeks
                Return "2 settimane"
            Case RadSchedulerStringId.RecurrenceDialogOK
                Return "OK"
            Case RadSchedulerStringId.RecurrenceDialogCancel
                Return "Annulla"
            Case RadSchedulerStringId.RecurrenceDialogRemoveRecurrence
                Return "Elimina Ricorrenza"
            Case RadSchedulerStringId.HourlyRecurrenceEvery
                Return "Ogni"
            Case RadSchedulerStringId.HourlyRecurrenceHours
                Return "Ora(e)"
            Case RadSchedulerStringId.DailyRecurrenceEveryDay
                Return "Ogni"
            Case RadSchedulerStringId.DailyRecurrenceEveryWeekday
                Return "Ogni giorno della settimana"
            Case RadSchedulerStringId.DailyRecurrenceDays
                Return "giorno(i)"
            Case RadSchedulerStringId.WeeklyRecurrenceRecurEvery
                Return "Ricorre ogni"
            Case RadSchedulerStringId.WeeklyRecurrenceWeeksOn
                Return "settimana(e) dopo:"
            Case RadSchedulerStringId.WeeklyRecurrenceSunday
                Return "Domenica"
            Case RadSchedulerStringId.WeeklyRecurrenceMonday
                Return "Lunedì"
            Case RadSchedulerStringId.WeeklyRecurrenceTuesday
                Return "Martedì"
            Case RadSchedulerStringId.WeeklyRecurrenceWednesday
                Return "Mercoledì"
            Case RadSchedulerStringId.WeeklyRecurrenceThursday
                Return "Giovedì"
            Case RadSchedulerStringId.WeeklyRecurrenceFriday
                Return "Venerdì"
            Case RadSchedulerStringId.WeeklyRecurrenceSaturday
                Return "Sabato"
            Case RadSchedulerStringId.WeeklyRecurrenceDay
                Return "Giorno"
            Case RadSchedulerStringId.WeeklyRecurrenceWeekday
                Return "Giorno lavorativo"
            Case RadSchedulerStringId.WeeklyRecurrenceWeekendDay
                Return "Giorno del fine settimana"
            Case RadSchedulerStringId.MonthlyRecurrenceDay
                Return "Giorno"
            Case RadSchedulerStringId.MonthlyRecurrenceWeek
                Return "Il"
            Case RadSchedulerStringId.MonthlyRecurrenceDayOfMonth
                Return "di ogni"
            Case RadSchedulerStringId.MonthlyRecurrenceMonths
                Return "mese(i)"
            Case RadSchedulerStringId.MonthlyRecurrenceWeekOfMonth
                Return "di ogni"
            Case RadSchedulerStringId.MonthlyRecurrenceFirst
                Return "Primo"
            Case RadSchedulerStringId.MonthlyRecurrenceSecond
                Return "Secondo"
            Case RadSchedulerStringId.MonthlyRecurrenceThird
                Return "Terzo"
            Case RadSchedulerStringId.MonthlyRecurrenceFourth
                Return "Quarto"
            Case RadSchedulerStringId.MonthlyRecurrenceLast
                Return "Ultimo"
            Case RadSchedulerStringId.YearlyRecurrenceDayOfMonth
                Return "Ogni"
            Case RadSchedulerStringId.YearlyRecurrenceWeekOfMonth
                Return "Il"
            Case RadSchedulerStringId.YearlyRecurrenceOfMonth
                Return "di"
            Case RadSchedulerStringId.YearlyRecurrenceJanuary
                Return "Gennaio"
            Case RadSchedulerStringId.YearlyRecurrenceFebruary
                Return "Febbraio"
            Case RadSchedulerStringId.YearlyRecurrenceMarch
                Return "Marzo"
            Case RadSchedulerStringId.YearlyRecurrenceApril
                Return "Aprile"
            Case RadSchedulerStringId.YearlyRecurrenceMay
                Return "Maggio"
            Case RadSchedulerStringId.YearlyRecurrenceJune
                Return "Giugno"
            Case RadSchedulerStringId.YearlyRecurrenceJuly
                Return "Luglio"
            Case RadSchedulerStringId.YearlyRecurrenceAugust
                Return "Agosto"
            Case RadSchedulerStringId.YearlyRecurrenceSeptember
                Return "Settembre"
            Case RadSchedulerStringId.YearlyRecurrenceOctober
                Return "Ottobre"
            Case RadSchedulerStringId.YearlyRecurrenceNovember
                Return "Novembre"
            Case RadSchedulerStringId.YearlyRecurrenceDecember
                Return "Dicembre"
            Case RadSchedulerStringId.BackgroundNone
                Return "Nessuna"
            Case RadSchedulerStringId.BackgroundImportant
                Return "Importante"
            Case RadSchedulerStringId.BackgroundBusiness
                Return "Business"
            Case RadSchedulerStringId.BackgroundPersonal
                Return "Personale"
            Case RadSchedulerStringId.BackgroundVacation
                Return "Vacanza"
            Case RadSchedulerStringId.BackgroundMustAttend
                Return "Deve Frequentare"
            Case RadSchedulerStringId.BackgroundTravelRequired
                Return "Viaggio Richiesto"
            Case RadSchedulerStringId.BackgroundNeedsPreparation
                Return "Necessita di preparazione"
            Case RadSchedulerStringId.BackgroundBirthday
                Return "Compleanno"
            Case RadSchedulerStringId.BackgroundAnniversary
                Return "Anniversario"
            Case RadSchedulerStringId.BackgroundPhoneCall
                Return "Chiamata Tel."
            Case RadSchedulerStringId.StatusBusy
                Return "Occupato"
            Case RadSchedulerStringId.StatusFree
                Return "Libero"
            Case RadSchedulerStringId.StatusTentative
                Return "Tentative"
            Case RadSchedulerStringId.StatusUnavailable
                Return "Non Disponibile"
            Case RadSchedulerStringId.ReminderNone
                Return "Nessuno"
            Case RadSchedulerStringId.ReminderOneMinute
                Return "1 minuto"
            Case RadSchedulerStringId.ReminderMinutes
                Return " minuti"
            Case RadSchedulerStringId.ReminderOneSecond
                Return "1 secondo"
            Case RadSchedulerStringId.ReminderSeconds
                Return " secondi"
            Case RadSchedulerStringId.ReminderDays
                Return " giorni"
            Case RadSchedulerStringId.ReminderWeeks
                Return " settimane"
            Case RadSchedulerStringId.ReminderHours
                Return " ore"
            Case RadSchedulerStringId.ReminderZeroMinutes
                Return "0 minuti"
            Case RadSchedulerStringId.ReminderFiveMinutes
                Return "5 minuti"
            Case RadSchedulerStringId.ReminderTenMinutes
                Return "10 minuti"
            Case RadSchedulerStringId.ReminderFifteenMinutes
                Return "15 minuti"
            Case RadSchedulerStringId.ReminderThirtyMinutes
                Return "30 minuti"
            Case RadSchedulerStringId.ReminderOneHour
                Return "1 ora"
            Case RadSchedulerStringId.ReminderTwoHours
                Return "2 ore"
            Case RadSchedulerStringId.ReminderThreeHours
                Return "3 ore"
            Case RadSchedulerStringId.ReminderFourHours
                Return "4 ore"
            Case RadSchedulerStringId.ReminderFiveHours
                Return "5 ore"
            Case RadSchedulerStringId.ReminderSixHours
                Return "6 ore"
            Case RadSchedulerStringId.ReminderSevenHours
                Return "7 ore"
            Case RadSchedulerStringId.ReminderEightHours
                Return "8 ore"
            Case RadSchedulerStringId.ReminderNineHours
                Return "9 ore"
            Case RadSchedulerStringId.ReminderTenHours
                Return "10 ore"
            Case RadSchedulerStringId.ReminderElevenHours
                Return "11 ore"
            Case RadSchedulerStringId.ReminderTwelveHours
                Return "12 ore"
            Case RadSchedulerStringId.ReminderEighteenHours
                Return "18 ore"
            Case RadSchedulerStringId.ReminderOneDay
                Return "1 giorno"
            Case RadSchedulerStringId.ReminderTwoDays
                Return "2 giorni"
            Case RadSchedulerStringId.ReminderThreeDays
                Return "3 giorni"
            Case RadSchedulerStringId.ReminderFourDays
                Return "4 giorni"
            Case RadSchedulerStringId.ReminderOneWeek
                Return "1 settimana"
            Case RadSchedulerStringId.ReminderTwoWeeks
                Return "2 settimane"
            Case RadSchedulerStringId.Reminder
                Return "Promemoria"
            Case RadSchedulerStringId.ContextMenuNewAppointment
                Return "Nuovo Appuntamento"
            Case RadSchedulerStringId.ContextMenuEditAppointment
                Return "Modifica Appuntamento"
            Case RadSchedulerStringId.ContextMenuNewRecurringAppointment
                Return "Nuovo appuntamento ricorrente"
            Case RadSchedulerStringId.ContextMenu60Minutes
                Return "60 Minuti"
            Case RadSchedulerStringId.ContextMenu30Minutes
                Return "30 Minuti"
            Case RadSchedulerStringId.ContextMenu15Minutes
                Return "15 Minuti"
            Case RadSchedulerStringId.ContextMenu10Minutes
                Return "10 Minuti"
            Case RadSchedulerStringId.ContextMenu6Minutes
                Return "6 Minuti"
            Case RadSchedulerStringId.ContextMenu5Minutes
                Return "5 Minuti"
            Case RadSchedulerStringId.ContextMenuNavigateToNextView
                Return "Vista Successiva"
            Case RadSchedulerStringId.ContextMenuNavigateToPreviousView
                Return "Vista Precedente"
            Case RadSchedulerStringId.ContextMenuTimescales
                Return "Scale temporali"
            Case RadSchedulerStringId.ContextMenuTimescalesYear
                Return "Anno"
            Case RadSchedulerStringId.ContextMenuTimescalesMonth
                Return "Mese"
            Case RadSchedulerStringId.ContextMenuTimescalesWeek
                Return "Settimana"
            Case RadSchedulerStringId.ContextMenuTimescalesDay
                Return "Giorno"
            Case RadSchedulerStringId.ContextMenuTimescalesHour
                Return "Ora"
            Case RadSchedulerStringId.ContextMenuTimescalesHalfHour
                Return "30 minuti"
            Case RadSchedulerStringId.ContextMenuTimescalesFifteenMinutes
                Return "15 minuti"
            Case RadSchedulerStringId.ErrorProviderWrongAppointmentDates
                Return "L'ora di fine dell'appuntamento è inferiore o uguale all'ora di inizio!"
            Case RadSchedulerStringId.ErrorProviderWrongExceptionDuration
                Return "L'intervallo di ricorrenza deve essere maggiore o uguale alla durata dell'appuntamento!"
            Case RadSchedulerStringId.ErrorProviderExceptionSameDate
                Return "Due occorrenze della stessa serie non possono verificarsi nello stesso giorno."
            Case RadSchedulerStringId.ErrorProviderExceptionSkipOverDate
                Return "L'eccezione di ricorrenza non può ignorare un'occorrenza successiva dello stesso appuntamento."
            Case RadSchedulerStringId.TimeZoneLocal
                Return "Locale"
            Case RadSchedulerStringId.CategoryNone
                Return "Personale"
            Case RadSchedulerStringId.CategoryBlue
                Return "Riunione"
            Case RadSchedulerStringId.CategoryGray
                Return "Contabilita"
            Case RadSchedulerStringId.CategoryGreen
                Return "SiCoGe Impegno"
            Case RadSchedulerStringId.CategoryLavender
                Return "SiCoGe OP"
            Case RadSchedulerStringId.CategoryOlive
                Return "SiCoGe OA"
            Case RadSchedulerStringId.CategoryOrange
                Return "SiCoGe Var. Competenza"
            Case RadSchedulerStringId.CategoryOrange
                Return "SiCoGe Var. Cassa"

            Case Else
                Debug.Print(id)
                Return "*UNKNOWN"
        End Select
    End Function

 

Attached Files:
1 comment
ADMIN
Dess | Tech Support Engineer, Principal
Posted on: 03 Nov 2023 13:05

Hello, Nicola,

Thank you for bringing this to our attention. We will do our best to introduce a proper fix accordingly. Meanwhile, the possible solution that I can suggest is to use the following custom dialog:

    Sub New()

        RadSchedulerLocalizationProvider.CurrentProvider = New ItalianSchedulerLocalizationProvider()
        InitializeComponent()
        AddHandler Me.RadScheduler1.AppointmentEditDialogShowing, AddressOf RadScheduler_AppointmentEditDialogShowing

    End Sub
    Private appointmentDialog As CustomAppointmentEditForm = Nothing
    Private Sub RadScheduler_AppointmentEditDialogShowing(sender As Object, e As Telerik.WinControls.UI.AppointmentEditDialogShowingEventArgs)
        If Me.appointmentDialog Is Nothing Then
            Me.appointmentDialog = New CustomAppointmentEditForm()
        End If
        e.AppointmentEditDialog = Me.appointmentDialog
    End Sub

    Public Class CustomAppointmentEditForm
        Inherits EditAppointmentDialog
        Protected Overrides Sub ApplySettingsToEvent(targetEvent As IEvent)
            Dim selectedRemidner As TimeSpan
            If Me.radDropDownListReminder.SelectedValue IsNot Nothing Then
                selectedRemidner = DirectCast(Me.radDropDownListReminder.SelectedValue, TimeSpan)
            End If

            MyBase.ApplySettingsToEvent(targetEvent)
            Dim app As Appointment = TryCast(targetEvent, Appointment)
            app.Reminder = selectedRemidner
        End Sub
    End Class
Please excuse us for the inconvenience caused.

Regards,
Dess | Tech Support Engineer, Principal
Progress Telerik

Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.