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); }