Translating (internationalization of) the default English DatePicker in Vaadin (Flow) is quite straightforward.
I created a compact subroutine for effortless reuse in all of my date pickers.
// Declaration
private final DatePicker birthday = new DatePicker("Geburtstag");
// Set German DatePicker
birthday.setI18n(Parsers.setGermanDatePicker());
The code above calls the “setGermanDatePicker” method, which is located in the “Parsers” class in my specific case.
/**
* Set German DatePicker
* Fill the DatePickerI18n with German values (First day Monday, etc.)
*
* @return
*/
public static DatePickerI18n setGermanDatePicker() {
DatePickerI18n dpI18n = new DatePicker.DatePickerI18n();
dpI18n.setDateFormat("dd.MM.yyyy");
dpI18n.setFirstDayOfWeek(1);
dpI18n.setToday("Heute");
dpI18n.setCancel("Abbrechen");
dpI18n.setMonthNames(List.of("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli",
"August", "September", "Oktober", "November", "Dezember"));
dpI18n.setWeekdays(List.of("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"));
dpI18n.setWeekdaysShort(List.of("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"));
return dpI18n;
}
It should be simple to adapt the above code for other languages or more complex situations, such as translating based on the locale passed to the function. However, I only require German for this Vaadin app.