To reproduce:
public Form1()
{
InitializeComponent();
this.radDateTimePicker1.Culture = new System.Globalization.CultureInfo("en-GB");
RadTimePickerLocalizationProvider.CurrentProvider = new MyTimePickerLocalizationProvider();
this.radDateTimePicker1.DateTimePickerElement.ShowTimePicker = true;
}
class MyTimePickerLocalizationProvider : RadTimePickerLocalizationProvider
{
public override string GetLocalizedString(string id)
{
switch (id)
{
case RadTimePickerStringId.HourHeaderText:
return "TEST Hours";
case RadTimePickerStringId.MinutesHeaderText:
return "TEST Minutes";
case RadTimePickerStringId.CloseButtonText:
return "TEST CLOSE";
default:
return string.Empty;
}
}
}
Workaround:
RadDateTimePickerCalendar calendarBehaviorFrom = this.radDateTimePicker1.DateTimePickerElement.GetCurrentBehavior() as RadDateTimePickerCalendar;
calendarBehaviorFrom.Calendar.ShowFooter = true;
calendarBehaviorFrom.PopupControl.Opened += PopupControl_PopupOpened;
private void PopupControl_PopupOpened(object sender, EventArgs args)
{
RadDateTimePickerDropDown dd = sender as RadDateTimePickerDropDown;
TimePickerDoneButtonContent buttonContent = ((RadPanel)dd.HostedControl).Controls[2] as TimePickerDoneButtonContent;
var doneButton = ((Telerik.WinControls.UI.TimePickerDoneButtonElement)(buttonContent.RootElement.Children[0]));
doneButton.ButtonElement.Text = RadTimePickerLocalizationProvider.CurrentProvider.GetLocalizedString(RadTimePickerStringId.CloseButtonText);
}