diff --git a/src/public/app/widgets/type_widgets/task_list.ts b/src/public/app/widgets/type_widgets/task_list.ts index cbe1c6327..f678e4c36 100644 --- a/src/public/app/widgets/type_widgets/task_list.ts +++ b/src/public/app/widgets/type_widgets/task_list.ts @@ -6,6 +6,7 @@ import * as taskService from "../../services/tasks.js"; import type { EventData } from "../../components/app_context.js"; import dayjs from "dayjs"; import calendarTime from "dayjs/plugin/calendar.js"; +import { t } from "../../services/i18n.js"; dayjs.extend(calendarTime); const TPL = ` @@ -81,6 +82,7 @@ function buildTasks(tasks: FTask[]) { let html = ''; const now = dayjs(); + const dateFormat = "DD-MM-YYYY"; for (const task of tasks) { const classes = ["task"]; @@ -94,7 +96,14 @@ function buildTasks(tasks: FTask[]) { if (task.dueDate) { html += ``; html += ` `; - html += dayjs(task.dueDate).calendar(); + html += dayjs(task.dueDate).calendar(null, { + sameDay: `[${t("tasks.due.today")}]`, + nextDay: `[${t("tasks.due.tomorrow")}]`, + nextWeek: "dddd", + lastDay: `[${t("tasks.due.yesterday")}]`, + lastWeek: dateFormat, + sameElse: dateFormat + }); html += ""; } html += `
`; diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json index 3394507c1..6f9a47a2d 100644 --- a/src/public/translations/en/translation.json +++ b/src/public/translations/en/translation.json @@ -1675,5 +1675,12 @@ "time_selector": { "invalid_input": "The entered time value is not a valid number.", "minimum_input": "The entered time value needs to be at least {{minimumSeconds}} seconds." + }, + "tasks": { + "due": { + "today": "Today", + "tomorrow": "Tomorrow", + "yesterday": "Yesterday" + } } } diff --git a/src/public/translations/ro/translation.json b/src/public/translations/ro/translation.json index d31d6563c..0837320e5 100644 --- a/src/public/translations/ro/translation.json +++ b/src/public/translations/ro/translation.json @@ -1678,5 +1678,12 @@ "redirect_bare_domain_description": "Redirecționează utilizatorii anonimi către pagina de partajare în locul paginii de autentificare", "redirect_bare_domain": "Redirecționează domeniul principal la pagina de partajare", "check_share_root": "Verificare stare pagină partajată principală" + }, + "tasks": { + "due": { + "today": "Azi", + "tomorrow": "Mâine", + "yesterday": "Ieri" + } } }