diff --git a/frontend/components/Task/NextTaskSuggestion.tsx b/frontend/components/Task/NextTaskSuggestion.tsx index d7f8c3e..33bbebe 100644 --- a/frontend/components/Task/NextTaskSuggestion.tsx +++ b/frontend/components/Task/NextTaskSuggestion.tsx @@ -160,11 +160,11 @@ const NextTaskSuggestion: React.FC = ({

)} -
+
+ {/* Overdue Alert */} + {isTaskOverdue(task) && !isOverdueAlertDismissed && ( +
+ +
+ +
+

+ {t( + 'task.overdueAlert', + "This task was in your plan yesterday and wasn't completed." + )} +

+

+ {task.today_move_count && + task.today_move_count > 1 + ? t( + 'task.overdueMultipleDays', + `This task has been postponed ${task.today_move_count} times.` + ) + : t( + 'task.overdueYesterday', + 'Consider prioritizing this task or breaking it into smaller steps.' + )} +

+
+
+
+ )} + {/* Content - Two column layout */}
diff --git a/frontend/components/Task/TaskHeader.tsx b/frontend/components/Task/TaskHeader.tsx index 31ecc13..5e86e30 100644 --- a/frontend/components/Task/TaskHeader.tsx +++ b/frontend/components/Task/TaskHeader.tsx @@ -1,14 +1,15 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect, useRef } from 'react'; +import { createPortal } from 'react-dom'; import { Link } from 'react-router-dom'; import { CalendarDaysIcon, CalendarIcon, PlayIcon, ArrowPathIcon, - ArrowRightIcon, ListBulletIcon, PencilIcon, TrashIcon, + EllipsisVerticalIcon, } from '@heroicons/react/24/outline'; import { TagIcon, FolderIcon } from '@heroicons/react/24/solid'; import { useTranslation } from 'react-i18next'; @@ -43,7 +44,6 @@ const TaskHeader: React.FC = ({ hideProjectName = false, onToggleToday, onTaskUpdate, - isOverdue = false, // Props for subtasks functionality showSubtasks, hasSubtasks, @@ -53,6 +53,92 @@ const TaskHeader: React.FC = ({ onDelete, }) => { const { t } = useTranslation(); + const [isDropdownOpen, setIsDropdownOpen] = useState(false); + const [dropdownPosition, setDropdownPosition] = useState({ + top: 0, + left: 0, + }); + const buttonRef = useRef(null); + const dropdownId = useRef( + `dropdown-${Math.random().toString(36).substr(2, 9)}` + ).current; + + // Calculate dropdown position + const calculateDropdownPosition = () => { + if (buttonRef.current) { + const rect = buttonRef.current.getBoundingClientRect(); + const dropdownHeight = 300; // Approximate dropdown height + const dropdownWidth = 192; // w-48 = 192px + const padding = 8; // Padding from screen edges + + // Default position: below and to the left of the button + let top = rect.bottom + window.scrollY + 4; + let left = rect.right - dropdownWidth; + + // Ensure dropdown doesn't go off the left edge + if (left < padding) { + left = padding; + } + + // Ensure dropdown doesn't go off the right edge + if (left + dropdownWidth > window.innerWidth - padding) { + left = window.innerWidth - dropdownWidth - padding; + } + + // If dropdown would go below viewport, position it above the button + if (rect.bottom + dropdownHeight > window.innerHeight - padding) { + top = rect.top + window.scrollY - dropdownHeight - 4; + // Ensure it doesn't go above the top of the viewport + if (top < window.scrollY + padding) { + top = window.scrollY + padding; + } + } + + const position = { top, left }; + setDropdownPosition(position); + } + }; + + // Close dropdown when clicking outside + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (isDropdownOpen && buttonRef.current) { + const target = event.target as Node; + const isOutsideButton = !buttonRef.current.contains(target); + const currentDropdown = document.querySelector( + `[data-dropdown-id="${dropdownId}"]` + ); + const isOutsideDropdown = !currentDropdown?.contains(target); + + if (isOutsideButton && isOutsideDropdown) { + setIsDropdownOpen(false); + } + } + }; + + // Listen for custom event to close this dropdown when another opens + const handleCloseOtherDropdowns = (event: CustomEvent) => { + if (event.detail.dropdownId !== dropdownId && isDropdownOpen) { + setIsDropdownOpen(false); + } + }; + + if (isDropdownOpen) { + document.addEventListener('click', handleClickOutside); + document.addEventListener( + 'closeOtherDropdowns', + handleCloseOtherDropdowns as EventListener + ); + } + + return () => { + document.removeEventListener('click', handleClickOutside); + document.removeEventListener( + 'closeOtherDropdowns', + handleCloseOtherDropdowns as EventListener + ); + }; + }, [isDropdownOpen, dropdownId]); const formatDueDate = (dueDate: string) => { const today = new Date().toISOString().split('T')[0]; @@ -170,12 +256,6 @@ const TaskHeader: React.FC = ({ {task.name} - {isOverdue && ( - - )}
{/* Project, tags, due date, and recurrence in same row, with spacing when they exist */}
@@ -406,17 +486,11 @@ const TaskHeader: React.FC = ({ />
- {/* Task content - 65% width */} -
+ {/* Task content - full width */} +
{/* Task Title */}
{task.name} - {isOverdue && ( - - )}
{/* Project, tags, due date, and recurrence */} @@ -485,135 +559,170 @@ const TaskHeader: React.FC = ({
- {/* Mobile buttons on the right */} + {/* Mobile 3-dot dropdown menu */}
- {/* Button Group - All buttons together - Mobile */} -
- {/* Today Plan Controls - Mobile */} - {onToggleToday && ( - - )} + - )} + // Close other dropdowns when opening this one + if (newOpenState) { + document.dispatchEvent( + new CustomEvent('closeOtherDropdowns', { + detail: { dropdownId }, + }) + ); + // Calculate position BEFORE opening to prevent blink + calculateDropdownPosition(); + } - {/* Show Subtasks Controls - Mobile */} - {hasSubtasks && - !( - task.status === 'archived' || - task.status === 3 - ) && ( - +
+ + {/* Dropdown Menu - Rendered via Portal */} + {isDropdownOpen && + createPortal( +
e.stopPropagation()} + > +
+ {/* Today Plan Controls */} + {onToggleToday && ( + + )} + + {/* Play/In Progress Controls */} + {(task.status === 'not_started' || + task.status === 'in_progress' || + task.status === 0 || + task.status === 1) && ( + - )} + 'tasks.setInProgress', + 'Set in progress' + )} + + )} - {/* Edit Button - Mobile */} - {onEdit && ( - - )} + {/* Show Subtasks Controls */} + {hasSubtasks && + !( + task.status === 'archived' || + task.status === 3 + ) && ( + + )} - {/* Delete Button - Mobile */} - {onDelete && ( - - )} -
-
+ {/* Edit Button */} + {onEdit && ( + + )} + + {/* Delete Button */} + {onDelete && ( + + )} +
+
, + document.body + )} diff --git a/public/locales/ar/translation.json b/public/locales/ar/translation.json index d582eed..da91045 100644 --- a/public/locales/ar/translation.json +++ b/public/locales/ar/translation.json @@ -111,7 +111,11 @@ "addToToday": "إضافة إلى خطة اليوم", "removeFromToday": "إزالة من خطة اليوم", "setInProgress": "تعيين قيد التنفيذ", - "setNotStarted": "تعيين لم يبدأ بعد" + "setNotStarted": "تعيين لم يبدأ بعد", + "showSubtasks": "عرض المهام الفرعية", + "hideSubtasks": "إخفاء المهام الفرعية", + "edit": "تعديل المهمة", + "delete": "حذف المهمة" }, "timeline": { "activityTimeline": "جدول الأنشطة", @@ -134,7 +138,9 @@ "status": "الحالة", "priority": "الأولوية", "dueDate": "تاريخ الاستحقاق", - "none": "لا شيء" + "none": "لا شيء", + "recurrenceEndDateChanged": "تاريخ انتهاء التكرار تم تغييره", + "recurrenceEndDate": "تاريخ انتهاء التكرار" }, "justNow": "الآن", "minutesAgo": "{{minutes}} دقيقة مضت", @@ -464,7 +470,9 @@ "archived": "مؤرشف", "unknown": "غير معروف", "telegramConnected": "تم الاتصال بتليجرام وجاري الاستطلاع", - "telegramConnectionProblem": "مشكلة في اتصال تليجرام" + "telegramConnectionProblem": "مشكلة في اتصال تليجرام", + "completed": "مكتمل", + "waiting": "في الانتظار" }, "project": { "name": "اسم المشروع", @@ -611,7 +619,15 @@ "nameHelper": { "title": "اجعلها أكثر وصفًا!", "suggestion": "حاول إضافة المزيد من التفاصيل مثل \"اتصل بطبيب الأسنان لتحديد موعد التنظيف\" بدلاً من \"اتصل بطبيب الأسنان\"" - } + }, + "overdueAlert": "كانت هذه المهمة في خطتك بالأمس ولم تكتمل.", + "overdueYesterday": "فكر في إعطاء أولوية لهذه المهمة أو تقسيمها إلى خطوات أصغر.", + "overdueMultipleDays": "تم تأجيل هذه المهمة {{count}} مرات.", + "content": "المحتوى", + "noNotes": "لم يتم إضافة محتوى بعد", + "subtasks": "المهام الفرعية", + "noSubtasks": "لا توجد مهام فرعية بعد", + "recentActivity": "النشاط الأخير" }, "projects": { "loading": "جارٍ تحميل المشاريع...", diff --git a/public/locales/bg/translation.json b/public/locales/bg/translation.json index 58e5c00..5fddbf3 100644 --- a/public/locales/bg/translation.json +++ b/public/locales/bg/translation.json @@ -111,7 +111,11 @@ "addToToday": "Добави към плана за днес", "removeFromToday": "Премахни от плана за днес", "setInProgress": "Задай в процес", - "setNotStarted": "Задай като не започната" + "setNotStarted": "Задай като не започната", + "showSubtasks": "Покажи подзадачи", + "hideSubtasks": "Скрий подзадачи", + "edit": "Редактиране на задача", + "delete": "Изтриване на задача" }, "timeline": { "activityTimeline": "Хронология на активността", @@ -134,7 +138,9 @@ "status": "Статус", "priority": "Приоритет", "dueDate": "Срок", - "none": "Няма" + "none": "Няма", + "recurrenceEndDateChanged": "Дата на края на повторението е променена", + "recurrenceEndDate": "Дата на края на повторението" }, "justNow": "Току-що", "minutesAgo": "{{minutes}}м. назад", @@ -464,7 +470,9 @@ "archived": "Архивирано", "unknown": "Неизвестно", "telegramConnected": "Telegram свързан и проверява", - "telegramConnectionProblem": "Проблем с връзката на Telegram" + "telegramConnectionProblem": "Проблем с връзката на Telegram", + "completed": "Завършено", + "waiting": "В очакване" }, "project": { "name": "Име на проекта", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Направете го по-описателно!", "suggestion": "Опитайте да добавите повече детайли като \"Обадете се на зъболекаря, за да насрочите час за почистване\" вместо просто \"Обадете се на зъболекаря\"" - } + }, + "overdueAlert": "Тази задача беше в плана ви вчера и не беше завършена.", + "overdueYesterday": "Помислете за приоритизиране на тази задача или разделянето ѝ на по-малки стъпки.", + "overdueMultipleDays": "Тази задача е отложена {{count}} пъти.", + "content": "Съдържание", + "noNotes": "Все още не е добавено съдържание", + "subtasks": "Подзадачи", + "noSubtasks": "Все още няма подзадачи", + "recentActivity": "Наскоро извършена дейност" }, "projects": { "loading": "Зареждане на проекти...", diff --git a/public/locales/da/translation.json b/public/locales/da/translation.json index 09011d9..938c17f 100644 --- a/public/locales/da/translation.json +++ b/public/locales/da/translation.json @@ -111,7 +111,11 @@ "addToToday": "Tilføj til dagens plan", "removeFromToday": "Fjern fra dagens plan", "setInProgress": "Sæt i gang", - "setNotStarted": "Sæt til ikke startet" + "setNotStarted": "Sæt til ikke startet", + "showSubtasks": "Vis underopgaver", + "hideSubtasks": "Skjul underopgaver", + "edit": "Rediger opgave", + "delete": "Slet opgave" }, "timeline": { "activityTimeline": "Aktivitets Tidslinje", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Prioritet", "dueDate": "Forfaldsdato", - "none": "Ingen" + "none": "Ingen", + "recurrenceEndDateChanged": "Ændret slutdato for gentagelse", + "recurrenceEndDate": "Slutdato for gentagelse" }, "justNow": "Lige nu", "minutesAgo": "{{minutes}}m siden", @@ -464,7 +470,9 @@ "archived": "Arkiveret", "unknown": "Ukendt", "telegramConnected": "Telegram tilsluttet og polling", - "telegramConnectionProblem": "Telegram forbindelsesproblem" + "telegramConnectionProblem": "Telegram forbindelsesproblem", + "completed": "Fuldført", + "waiting": "Venter" }, "project": { "name": "Projekt Navn", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Gør det mere beskrivende!", "suggestion": "Prøv at tilføje flere detaljer som \"Ring til tandlægen for at planlægge rengøringsaftale\" i stedet for bare \"Ring til tandlægen\"" - } + }, + "overdueAlert": "Denne opgave var i din plan i går og blev ikke fuldført.", + "overdueYesterday": "Overvej at prioritere denne opgave eller opdele den i mindre trin.", + "overdueMultipleDays": "Denne opgave er blevet udsat {{count}} gange.", + "content": "Indhold", + "noNotes": "Ingen indhold tilføjet endnu", + "subtasks": "Underopgaver", + "noSubtasks": "Ingen underopgaver endnu", + "recentActivity": "Seneste aktivitet" }, "projects": { "loading": "Indlæser projekter...", diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index befaf9a..b2d657e 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -111,7 +111,11 @@ "addNewTask": "Neue Aufgabe hinzufügen", "metrics": "Metriken", "setInProgress": "In Bearbeitung setzen", - "setNotStarted": "Auf nicht begonnen setzen" + "setNotStarted": "Auf nicht begonnen setzen", + "showSubtasks": "Unteraufgaben anzeigen", + "hideSubtasks": "Unteraufgaben ausblenden", + "edit": "Aufgabe bearbeiten", + "delete": "Aufgabe löschen" }, "timeline": { "activityTimeline": "Aktivitätsverlauf", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Priorität", "dueDate": "Fälligkeitsdatum", - "none": "Keine" + "none": "Keine", + "recurrenceEndDateChanged": "Das Enddatum der Wiederholung wurde geändert", + "recurrenceEndDate": "Enddatum der Wiederholung" }, "justNow": "Gerade eben", "minutesAgo": "{{minutes}}m her", @@ -550,7 +556,15 @@ "updated": "Aufgabe", "updatedSuccessfully": "erfolgreich aktualisiert!", "deleted": "Aufgabe", - "deletedSuccessfully": "erfolgreich gelöscht!" + "deletedSuccessfully": "erfolgreich gelöscht!", + "overdueAlert": "Diese Aufgabe war gestern in Ihrem Plan und wurde nicht abgeschlossen.", + "overdueYesterday": "Erwägen Sie, diese Aufgabe zu priorisieren oder in kleinere Schritte zu unterteilen.", + "overdueMultipleDays": "Diese Aufgabe wurde {{count}} Mal verschoben.", + "content": "Inhalt", + "noNotes": "Noch kein Inhalt hinzugefügt", + "subtasks": "Unteraufgaben", + "noSubtasks": "Noch keine Unteraufgaben", + "recentActivity": "Aktuelle Aktivitäten" }, "calendar": { "month": "Monat", @@ -674,7 +688,9 @@ "archived": "Archiviert", "unknown": "Unbekannt", "telegramConnected": "Telegram verbunden und abfragt", - "telegramConnectionProblem": "Telegram-Verbindungsproblem" + "telegramConnectionProblem": "Telegram-Verbindungsproblem", + "completed": "Abgeschlossen", + "waiting": "Warten" }, "dateIndicators": { "today": "HEUTE", diff --git a/public/locales/el/translation.json b/public/locales/el/translation.json index e3a386b..a47db4a 100644 --- a/public/locales/el/translation.json +++ b/public/locales/el/translation.json @@ -306,7 +306,11 @@ "addToToday": "Προσθήκη στο σημερινό σχέδιο", "removeFromToday": "Αφαίρεση από το σημερινό σχέδιο", "setInProgress": "Ορισμός ως 'Σε Εξέλιξη'", - "setNotStarted": "Ορισμός ως 'Δεν Έχει Ξεκινήσει'" + "setNotStarted": "Ορισμός ως 'Δεν Έχει Ξεκινήσει'", + "showSubtasks": "Εμφάνιση υποκαθηκόντων", + "hideSubtasks": "Απόκρυψη υποκαθηκόντων", + "edit": "Επεξεργασία καθήκοντος", + "delete": "Διαγραφή καθήκοντος" }, "timeline": { "activityTimeline": "Χρονοδιάγραμμα Δραστηριότητας", @@ -329,7 +333,9 @@ "status": "Κατάσταση", "priority": "Προτεραιότητα", "dueDate": "Ημερομηνία λήξης", - "none": "Καμία" + "none": "Καμία", + "recurrenceEndDateChanged": "Η ημερομηνία λήξης επανάληψης άλλαξε", + "recurrenceEndDate": "Η ημερομηνία λήξης επανάληψης" }, "justNow": "Μόλις τώρα", "minutesAgo": "{{minutes}} λεπτά πριν", @@ -526,7 +532,9 @@ "archived": "Αρχειοθετημένο", "unknown": "Άγνωστο", "telegramConnected": "Το Telegram είναι συνδεδεμένο και αναζητά", - "telegramConnectionProblem": "Πρόβλημα σύνδεσης με το Telegram" + "telegramConnectionProblem": "Πρόβλημα σύνδεσης με το Telegram", + "completed": "Ολοκληρώθηκε", + "waiting": "Σε αναμονή" }, "task": { "labels": { @@ -564,7 +572,15 @@ "updated": "Εργασία", "updatedSuccessfully": "ενημερώθηκε επιτυχώς!", "deleted": "Εργασία", - "deletedSuccessfully": "διαγράφηκε επιτυχώς!" + "deletedSuccessfully": "διαγράφηκε επιτυχώς!", + "overdueAlert": "Αυτή η εργασία ήταν στο σχέδιο σας χθες και δεν ολοκληρώθηκε.", + "overdueYesterday": "Σκεφτείτε να δώσετε προτεραιότητα σε αυτή την εργασία ή να την χωρίσετε σε μικρότερα βήματα.", + "overdueMultipleDays": "Αυτή η εργασία έχει αναβληθεί {{count}} φορές.", + "content": "Περιεχόμενο", + "noNotes": "Δεν έχει προστεθεί περιεχόμενο ακόμα", + "subtasks": "Υποεργασίες", + "noSubtasks": "Δεν υπάρχουν υποεργασίες ακόμα", + "recentActivity": "Πρόσφατη Δραστηριότητα" }, "dateFormats": { "long": "EEEE, d MMMM yyyy", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index df76f87..43bab78 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -111,7 +111,11 @@ "addToToday": "Add to today plan", "removeFromToday": "Remove from today plan", "setInProgress": "Set in progress", - "setNotStarted": "Set to not started" + "setNotStarted": "Set to not started", + "showSubtasks": "Show subtasks", + "hideSubtasks": "Hide subtasks", + "edit": "Edit task", + "delete": "Delete task" }, "timeline": { "activityTimeline": "Activity Timeline", @@ -621,7 +625,15 @@ "nameHelper": { "title": "Make it more descriptive!", "suggestion": "Try adding more details like \"Call dentist to schedule cleaning appointment\" instead of just \"Call dentist\"" - } + }, + "overdueAlert": "This task was in your plan yesterday and wasn't completed.", + "overdueYesterday": "Consider prioritizing this task or breaking it into smaller steps.", + "overdueMultipleDays": "This task has been postponed {{count}} times.", + "content": "Content", + "noNotes": "No content added yet", + "subtasks": "Subtasks", + "noSubtasks": "No subtasks yet", + "recentActivity": "Recent Activity" }, "projects": { "loading": "Loading projects...", diff --git a/public/locales/es/translation.json b/public/locales/es/translation.json index e50415e..5104064 100644 --- a/public/locales/es/translation.json +++ b/public/locales/es/translation.json @@ -306,7 +306,11 @@ "tasksCompleted": "tareas completadas", "metrics": "Métricas", "setInProgress": "Establecer en progreso", - "setNotStarted": "Establecer como no iniciado" + "setNotStarted": "Establecer como no iniciado", + "showSubtasks": "Mostrar subtareas", + "hideSubtasks": "Ocultar subtareas", + "edit": "Editar tarea", + "delete": "Eliminar tarea" }, "timeline": { "activityTimeline": "Línea de Tiempo de Actividad", @@ -329,7 +333,9 @@ "status": "Estado", "priority": "Prioridad", "dueDate": "Fecha de vencimiento", - "none": "Ninguno" + "none": "Ninguno", + "recurrenceEndDateChanged": "Fecha de finalización de la recurrencia cambiada", + "recurrenceEndDate": "Fecha de finalización de la recurrencia" }, "justNow": "Justo ahora", "minutesAgo": "{{minutes}}m hace", @@ -520,7 +526,9 @@ "archived": "Archivado", "unknown": "Desconocido", "telegramConnected": "Telegram conectado y sondeando", - "telegramConnectionProblem": "Problema de conexión de Telegram" + "telegramConnectionProblem": "Problema de conexión de Telegram", + "completed": "Completado", + "waiting": "Esperando" }, "project": { "name": "Nombre del Proyecto", @@ -564,7 +572,15 @@ "updated": "Tarea", "updatedSuccessfully": "actualizada con éxito!", "deleted": "Tarea", - "deletedSuccessfully": "eliminada con éxito!" + "deletedSuccessfully": "eliminada con éxito!", + "overdueAlert": "Esta tarea estaba en tu plan ayer y no se completó.", + "overdueYesterday": "Considera priorizar esta tarea o dividirla en pasos más pequeños.", + "overdueMultipleDays": "Esta tarea ha sido pospuesta {{count}} veces.", + "content": "Contenido", + "noNotes": "No se ha añadido contenido aún", + "subtasks": "Subtareas", + "noSubtasks": "No hay subtareas aún", + "recentActivity": "Actividad Reciente" }, "dateIndicators": { "today": "HOY", diff --git a/public/locales/fi/translation.json b/public/locales/fi/translation.json index ba8eeda..e23a7db 100644 --- a/public/locales/fi/translation.json +++ b/public/locales/fi/translation.json @@ -111,7 +111,11 @@ "addToToday": "Lisää tänään suunnitelmaan", "removeFromToday": "Poista tänään suunnitelmasta", "setInProgress": "Aseta käynnissä olevaksi", - "setNotStarted": "Aseta aloittamatta" + "setNotStarted": "Aseta aloittamatta", + "showSubtasks": "Näytä alitehtävät", + "hideSubtasks": "Piilota alitehtävät", + "edit": "Muokkaa tehtävää", + "delete": "Poista tehtävä" }, "timeline": { "activityTimeline": "Toiminta-aikajana", @@ -134,7 +138,9 @@ "status": "Tila", "priority": "Prioriteetti", "dueDate": "Eräpäivä", - "none": "Ei mitään" + "none": "Ei mitään", + "recurrenceEndDateChanged": "Toistuvuuden päättymispäivämäärä on muuttunut", + "recurrenceEndDate": "Toistuvuuden päättymispäivämäärä" }, "justNow": "Juuri nyt", "minutesAgo": "{{minutes}}m sitten", @@ -464,7 +470,9 @@ "archived": "Arkistoitu", "unknown": "Tuntematon", "telegramConnected": "Telegram yhdistetty ja kyselyssä", - "telegramConnectionProblem": "Telegram-yhteysongelma" + "telegramConnectionProblem": "Telegram-yhteysongelma", + "completed": "Valmis", + "waiting": "Odottaa" }, "project": { "name": "Projektin nimi", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Tee siitä kuvaavampi!", "suggestion": "Yritä lisätä enemmän yksityiskohtia, kuten \"Soita hammaslääkärille aikatauluttaaksesi puhdistusajan\" sen sijaan, että sanoisit vain \"Soita hammaslääkärille\"" - } + }, + "overdueAlert": "Tämä tehtävä oli suunnitelmassasi eilen eikä sitä ole suoritettu.", + "overdueYesterday": "Harkitse tämän tehtävän priorisoimista tai jakamista pienempiin vaiheisiin.", + "overdueMultipleDays": "Tätä tehtävää on siirretty {{count}} kertaa.", + "content": "Sisältö", + "noNotes": "Ei vielä lisättyä sisältöä", + "subtasks": "Ala-tehtävät", + "noSubtasks": "Ei vielä ala-tehtäviä", + "recentActivity": "Viimeaikainen toiminta" }, "projects": { "loading": "Ladataan projekteja...", diff --git a/public/locales/fr/translation.json b/public/locales/fr/translation.json index c1b4ff6..c715987 100644 --- a/public/locales/fr/translation.json +++ b/public/locales/fr/translation.json @@ -111,7 +111,11 @@ "addToToday": "Ajouter au plan d'aujourd'hui", "removeFromToday": "Retirer du plan d'aujourd'hui", "setInProgress": "Définir en cours", - "setNotStarted": "Définir comme non commencé" + "setNotStarted": "Définir comme non commencé", + "showSubtasks": "Afficher les sous-tâches", + "hideSubtasks": "Masquer les sous-tâches", + "edit": "Modifier la tâche", + "delete": "Supprimer la tâche" }, "timeline": { "activityTimeline": "Chronologie d'Activité", @@ -134,7 +138,9 @@ "status": "Statut", "priority": "Priorité", "dueDate": "Date d'échéance", - "none": "Aucun" + "none": "Aucun", + "recurrenceEndDateChanged": "Date de fin de récurrence modifiée", + "recurrenceEndDate": "Date de fin de récurrence" }, "justNow": "À l'instant", "minutesAgo": "{{minutes}}m auparavant", @@ -464,7 +470,9 @@ "archived": "Archivé", "unknown": "Inconnu", "telegramConnected": "Telegram connecté et en cours de sondage", - "telegramConnectionProblem": "Problème de connexion à Telegram" + "telegramConnectionProblem": "Problème de connexion à Telegram", + "completed": "Terminé", + "waiting": "En attente" }, "project": { "name": "Nom du projet", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Rendez-le plus descriptif !", "suggestion": "Essayez d'ajouter plus de détails comme \"Appeler le dentiste pour prendre un rendez-vous de nettoyage\" au lieu de simplement \"Appeler le dentiste\"" - } + }, + "overdueAlert": "Cette tâche était dans votre plan hier et n'a pas été complétée.", + "overdueYesterday": "Envisagez de prioriser cette tâche ou de la décomposer en étapes plus petites.", + "overdueMultipleDays": "Cette tâche a été reportée {{count}} fois.", + "content": "Contenu", + "noNotes": "Aucun contenu ajouté pour le moment", + "subtasks": "Sous-tâches", + "noSubtasks": "Aucune sous-tâche pour le moment", + "recentActivity": "Activité récente" }, "projects": { "loading": "Chargement des projets...", diff --git a/public/locales/id/translation.json b/public/locales/id/translation.json index 4db7a20..77ec782 100644 --- a/public/locales/id/translation.json +++ b/public/locales/id/translation.json @@ -111,7 +111,11 @@ "addToToday": "Tambahkan ke rencana hari ini", "removeFromToday": "Hapus dari rencana hari ini", "setInProgress": "Tandai sebagai sedang berlangsung", - "setNotStarted": "Tandai sebagai belum dimulai" + "setNotStarted": "Tandai sebagai belum dimulai", + "showSubtasks": "Tampilkan subtugas", + "hideSubtasks": "Sembunyikan subtugas", + "edit": "Edit tugas", + "delete": "Hapus tugas" }, "timeline": { "activityTimeline": "Garis Waktu Aktivitas", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Prioritas", "dueDate": "Tanggal jatuh tempo", - "none": "Tidak ada" + "none": "Tidak ada", + "recurrenceEndDateChanged": "Tanggal akhir pengulangan telah diubah", + "recurrenceEndDate": "Tanggal akhir pengulangan" }, "justNow": "Baru saja", "minutesAgo": "{{minutes}}m yang lalu", @@ -464,7 +470,9 @@ "archived": "Arsip", "unknown": "Tidak Diketahui", "telegramConnected": "Telegram terhubung dan memeriksa", - "telegramConnectionProblem": "Masalah koneksi Telegram" + "telegramConnectionProblem": "Masalah koneksi Telegram", + "completed": "Selesai", + "waiting": "Menunggu" }, "project": { "name": "Nama Proyek", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Buat lebih deskriptif!", "suggestion": "Cobalah menambahkan lebih banyak detail seperti \"Hubungi dokter gigi untuk menjadwalkan janji pembersihan\" alih-alih hanya \"Hubungi dokter gigi\"" - } + }, + "overdueAlert": "Tugas ini ada dalam rencana Anda kemarin dan belum diselesaikan.", + "overdueYesterday": "Pertimbangkan untuk memprioritaskan tugas ini atau membaginya menjadi langkah-langkah yang lebih kecil.", + "overdueMultipleDays": "Tugas ini telah ditunda {{count}} kali.", + "content": "Konten", + "noNotes": "Belum ada konten yang ditambahkan", + "subtasks": "Subtugas", + "noSubtasks": "Belum ada subtugas", + "recentActivity": "Aktivitas Terbaru" }, "projects": { "loading": "Memuat proyek...", diff --git a/public/locales/it/translation.json b/public/locales/it/translation.json index f2766f1..02befd4 100644 --- a/public/locales/it/translation.json +++ b/public/locales/it/translation.json @@ -111,7 +111,11 @@ "addToToday": "Aggiungi al piano di oggi", "removeFromToday": "Rimuovi dal piano di oggi", "setInProgress": "Imposta in corso", - "setNotStarted": "Imposta come non iniziata" + "setNotStarted": "Imposta come non iniziata", + "showSubtasks": "Mostra sottocompiti", + "hideSubtasks": "Nascondi sottocompiti", + "edit": "Modifica attività", + "delete": "Elimina attività" }, "timeline": { "activityTimeline": "Timeline delle Attività", @@ -134,7 +138,9 @@ "status": "Stato", "priority": "Priorità", "dueDate": "Data di scadenza", - "none": "Nessuno" + "none": "Nessuno", + "recurrenceEndDateChanged": "Data di fine ricorrenza cambiata", + "recurrenceEndDate": "Data di fine ricorrenza" }, "justNow": "Proprio adesso", "minutesAgo": "{{minutes}}m fa", @@ -464,7 +470,9 @@ "archived": "Archiviata", "unknown": "Sconosciuto", "telegramConnected": "Telegram connesso e in polling", - "telegramConnectionProblem": "Problema di connessione a Telegram" + "telegramConnectionProblem": "Problema di connessione a Telegram", + "completed": "Completato", + "waiting": "In attesa" }, "project": { "name": "Nome Progetto", @@ -612,7 +620,15 @@ "nameHelper": { "title": "Rendila più descrittiva!", "suggestion": "Prova ad aggiungere più dettagli come \"Chiamare il dentista per programmare l'appuntamento per la pulizia\" invece di solo \"Chiamare il dentista\"" - } + }, + "overdueAlert": "Questo compito era nel tuo piano ieri e non è stato completato.", + "overdueYesterday": "Considera di dare priorità a questo compito o di suddividerlo in passaggi più piccoli.", + "overdueMultipleDays": "Questo compito è stato posticipato {{count}} volte.", + "content": "Contenuto", + "noNotes": "Nessun contenuto aggiunto ancora", + "subtasks": "Sottocompiti", + "noSubtasks": "Nessun sottocompito ancora", + "recentActivity": "Attività recente" }, "projects": { "loading": "Caricamento progetti...", diff --git a/public/locales/jp/translation.json b/public/locales/jp/translation.json index 950f43b..a771742 100644 --- a/public/locales/jp/translation.json +++ b/public/locales/jp/translation.json @@ -111,7 +111,11 @@ "tasksCompleted": "タスク完了", "metrics": "メトリクス", "setInProgress": "進行中に設定", - "setNotStarted": "未開始に設定" + "setNotStarted": "未開始に設定", + "showSubtasks": "サブタスクを表示", + "hideSubtasks": "サブタスクを非表示", + "edit": "タスクを編集", + "delete": "タスクを削除" }, "timeline": { "activityTimeline": "アクティビティタイムライン", @@ -134,7 +138,9 @@ "status": "ステータス", "priority": "優先度", "dueDate": "期限", - "none": "なし" + "none": "なし", + "recurrenceEndDateChanged": "繰り返し終了日が変更されました", + "recurrenceEndDate": "繰り返し終了日" }, "justNow": "たった今", "minutesAgo": "{{minutes}}分前", @@ -666,7 +672,15 @@ "updated": "タスク", "updatedSuccessfully": "が正常に更新されました!", "deleted": "タスク", - "deletedSuccessfully": "が正常に削除されました!" + "deletedSuccessfully": "が正常に削除されました!", + "overdueAlert": "このタスクは昨日の計画に含まれていましたが、完了していません。", + "overdueYesterday": "このタスクを優先するか、より小さなステップに分けることを検討してください。", + "overdueMultipleDays": "このタスクは{{count}}回延期されています。", + "content": "内容", + "noNotes": "まだ内容が追加されていません", + "subtasks": "サブタスク", + "noSubtasks": "まだサブタスクはありません", + "recentActivity": "最近の活動" }, "calendar": { "month": "月", @@ -738,7 +752,9 @@ "archived": "アーカイブ", "unknown": "不明", "telegramConnected": "Telegramが接続され、ポーリング中", - "telegramConnectionProblem": "Telegram接続の問題" + "telegramConnectionProblem": "Telegram接続の問題", + "completed": "完了", + "waiting": "待機中" }, "dateIndicators": { "today": "今日", diff --git a/public/locales/ko/translation.json b/public/locales/ko/translation.json index 626fda6..cb2cc8f 100644 --- a/public/locales/ko/translation.json +++ b/public/locales/ko/translation.json @@ -111,7 +111,11 @@ "addToToday": "오늘 계획에 추가", "removeFromToday": "오늘 계획에서 제거", "setInProgress": "진행 중으로 설정", - "setNotStarted": "시작되지 않음으로 설정" + "setNotStarted": "시작되지 않음으로 설정", + "showSubtasks": "하위 작업 표시", + "hideSubtasks": "하위 작업 숨기기", + "edit": "작업 편집", + "delete": "작업 삭제" }, "timeline": { "activityTimeline": "활동 타임라인", @@ -134,7 +138,9 @@ "status": "상태", "priority": "우선순위", "dueDate": "마감일", - "none": "없음" + "none": "없음", + "recurrenceEndDateChanged": "반복 종료 날짜가 변경되었습니다", + "recurrenceEndDate": "반복 종료 날짜" }, "justNow": "방금", "minutesAgo": "{{minutes}}분 전", @@ -464,7 +470,9 @@ "archived": "보관됨", "unknown": "알 수 없음", "telegramConnected": "텔레그램 연결됨 및 폴링 중", - "telegramConnectionProblem": "텔레그램 연결 문제" + "telegramConnectionProblem": "텔레그램 연결 문제", + "completed": "완료됨", + "waiting": "대기 중" }, "project": { "name": "프로젝트 이름", @@ -611,7 +619,15 @@ "nameHelper": { "title": "더 설명적으로 만들어 보세요!", "suggestion": "\"치과에 전화하여 청소 예약하기\"와 같은 더 많은 세부정보를 추가해 보세요. 단순히 \"치과에 전화하기\" 대신에요." - } + }, + "overdueAlert": "이 작업은 어제 귀하의 계획에 있었으나 완료되지 않았습니다.", + "overdueYesterday": "이 작업의 우선 순위를 정하거나 더 작은 단계로 나누는 것을 고려해 보세요.", + "overdueMultipleDays": "이 작업은 {{count}} 번 연기되었습니다.", + "content": "내용", + "noNotes": "아직 추가된 내용이 없습니다", + "subtasks": "하위 작업", + "noSubtasks": "아직 하위 작업이 없습니다", + "recentActivity": "최근 활동" }, "projects": { "loading": "프로젝트 로딩 중...", diff --git a/public/locales/nl/translation.json b/public/locales/nl/translation.json index 25fb1b3..9de17c5 100644 --- a/public/locales/nl/translation.json +++ b/public/locales/nl/translation.json @@ -111,7 +111,11 @@ "addToToday": "Toevoegen aan het plan van vandaag", "removeFromToday": "Verwijderen van het plan van vandaag", "setInProgress": "Instellen op in uitvoering", - "setNotStarted": "Instellen op niet gestart" + "setNotStarted": "Instellen op niet gestart", + "showSubtasks": "Toon subtaken", + "hideSubtasks": "Verberg subtaken", + "edit": "Bewerk taak", + "delete": "Verwijder taak" }, "timeline": { "activityTimeline": "Activiteit Tijdlijn", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Prioriteit", "dueDate": "Vervaldatum", - "none": "Geen" + "none": "Geen", + "recurrenceEndDateChanged": "Einddatum van herhaling gewijzigd", + "recurrenceEndDate": "Einddatum van herhaling" }, "justNow": "Net nu", "minutesAgo": "{{minutes}}m geleden", @@ -464,7 +470,9 @@ "archived": "Gearchiveerd", "unknown": "Onbekend", "telegramConnected": "Telegram verbonden en aan het polleren", - "telegramConnectionProblem": "Probleem met Telegram-verbinding" + "telegramConnectionProblem": "Probleem met Telegram-verbinding", + "completed": "Voltooid", + "waiting": "Wachten" }, "project": { "name": "Projectnaam", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Maak het beschrijvender!", "suggestion": "Probeer meer details toe te voegen zoals \"Bel de tandarts om een afspraak voor een reiniging te plannen\" in plaats van alleen \"Bel de tandarts\"" - } + }, + "overdueAlert": "Deze taak stond gisteren in je planning en is niet voltooid.", + "overdueYesterday": "Overweeg deze taak prioriteit te geven of deze in kleinere stappen op te splitsen.", + "overdueMultipleDays": "Deze taak is {{count}} keer uitgesteld.", + "content": "Inhoud", + "noNotes": "Nog geen inhoud toegevoegd", + "subtasks": "Subtaken", + "noSubtasks": "Nog geen subtaken", + "recentActivity": "Recente Activiteit" }, "projects": { "loading": "Projecten laden...", diff --git a/public/locales/no/translation.json b/public/locales/no/translation.json index 4aaa8d7..dbbdb5a 100644 --- a/public/locales/no/translation.json +++ b/public/locales/no/translation.json @@ -111,7 +111,11 @@ "addToToday": "Legg til i dagens plan", "removeFromToday": "Fjern fra dagens plan", "setInProgress": "Sett i gang", - "setNotStarted": "Sett til ikke startet" + "setNotStarted": "Sett til ikke startet", + "showSubtasks": "Vis undertasker", + "hideSubtasks": "Skjul undertasker", + "edit": "Rediger oppgave", + "delete": "Slett oppgave" }, "timeline": { "activityTimeline": "Aktivitetslinje", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Prioritet", "dueDate": "Forfallsdato", - "none": "Ingen" + "none": "Ingen", + "recurrenceEndDateChanged": "Endringsdato for gjentakelse endret", + "recurrenceEndDate": "Endringsdato for gjentakelse" }, "justNow": "Akkurat nå", "minutesAgo": "{{minutes}}m siden", @@ -464,7 +470,9 @@ "archived": "Arkivert", "unknown": "Ukjent", "telegramConnected": "Telegram tilkoblet og henter data", - "telegramConnectionProblem": "Telegram tilkoblingsproblem" + "telegramConnectionProblem": "Telegram tilkoblingsproblem", + "completed": "Fullført", + "waiting": "Venter" }, "project": { "name": "Prosjektnavn", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Gjør det mer beskrivende!", "suggestion": "Prøv å legge til flere detaljer som \"Ring tannlegen for å avtale rengjøringsavtale\" i stedet for bare \"Ring tannlegen\"" - } + }, + "overdueAlert": "Denne oppgaven var i planen din i går og ble ikke fullført.", + "overdueYesterday": "Vurder å prioritere denne oppgaven eller dele den opp i mindre trinn.", + "overdueMultipleDays": "Denne oppgaven har blitt utsatt {{count}} ganger.", + "content": "Innhold", + "noNotes": "Ingen innhold lagt til ennå", + "subtasks": "Undertasker", + "noSubtasks": "Ingen undertasker ennå", + "recentActivity": "Nylig aktivitet" }, "projects": { "loading": "Laster prosjekter...", diff --git a/public/locales/pl/translation.json b/public/locales/pl/translation.json index f40962b..3c1fef5 100644 --- a/public/locales/pl/translation.json +++ b/public/locales/pl/translation.json @@ -111,7 +111,11 @@ "addToToday": "Dodaj do planu na dzisiaj", "removeFromToday": "Usuń z planu na dzisiaj", "setInProgress": "Ustaw jako w trakcie", - "setNotStarted": "Ustaw jako nie rozpoczęte" + "setNotStarted": "Ustaw jako nie rozpoczęte", + "showSubtasks": "Pokaż podzadania", + "hideSubtasks": "Ukryj podzadania", + "edit": "Edytuj zadanie", + "delete": "Usuń zadanie" }, "timeline": { "activityTimeline": "Oś czasu aktywności", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Priorytet", "dueDate": "Termin", - "none": "Brak" + "none": "Brak", + "recurrenceEndDateChanged": "Data zakończenia powtarzania została zmieniona", + "recurrenceEndDate": "Data zakończenia powtarzania" }, "justNow": "Właśnie teraz", "minutesAgo": "{{minutes}}m temu", @@ -464,7 +470,9 @@ "archived": "Zarchiwizowane", "unknown": "Nieznany", "telegramConnected": "Telegram połączony i sprawdzanie", - "telegramConnectionProblem": "Problem z połączeniem Telegram" + "telegramConnectionProblem": "Problem z połączeniem Telegram", + "completed": "Zakończone", + "waiting": "Oczekiwanie" }, "project": { "name": "Nazwa projektu", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Uczyń to bardziej opisowym!", "suggestion": "Spróbuj dodać więcej szczegółów, takich jak \"Zadzwoń do dentysty, aby umówić się na wizytę na czyszczenie\" zamiast po prostu \"Zadzwoń do dentysty\"" - } + }, + "overdueAlert": "To zadanie było w Twoim planie wczoraj i nie zostało ukończone.", + "overdueYesterday": "Rozważ nadanie priorytetu temu zadaniu lub podzielenie go na mniejsze kroki.", + "overdueMultipleDays": "To zadanie zostało odłożone {{count}} razy.", + "content": "Treść", + "noNotes": "Nie dodano jeszcze treści", + "subtasks": "Podzadania", + "noSubtasks": "Brak podzadań", + "recentActivity": "Ostatnia aktywność" }, "projects": { "loading": "Ładowanie projektów...", diff --git a/public/locales/pt/translation.json b/public/locales/pt/translation.json index 079da2d..0c492c0 100644 --- a/public/locales/pt/translation.json +++ b/public/locales/pt/translation.json @@ -111,7 +111,11 @@ "addToToday": "Adicionar ao plano de hoje", "removeFromToday": "Remover do plano de hoje", "setInProgress": "Definir como em progresso", - "setNotStarted": "Definir como não iniciado" + "setNotStarted": "Definir como não iniciado", + "showSubtasks": "Mostrar subtarefas", + "hideSubtasks": "Ocultar subtarefas", + "edit": "Editar tarefa", + "delete": "Excluir tarefa" }, "timeline": { "activityTimeline": "Linha do Tempo de Atividades", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Prioridade", "dueDate": "Data de vencimento", - "none": "Nenhum" + "none": "Nenhum", + "recurrenceEndDateChanged": "Data de término da recorrência alterada", + "recurrenceEndDate": "Data de término da recorrência" }, "justNow": "Agora mesmo", "minutesAgo": "{{minutes}}m atrás", @@ -464,7 +470,9 @@ "archived": "Arquivado", "unknown": "Desconhecido", "telegramConnected": "Telegram conectado e recebendo dados", - "telegramConnectionProblem": "Problema de conexão com o Telegram" + "telegramConnectionProblem": "Problema de conexão com o Telegram", + "completed": "Concluído", + "waiting": "Aguardando" }, "project": { "name": "Nome do Projeto", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Torne-o mais descritivo!", "suggestion": "Tente adicionar mais detalhes como \"Ligar para o dentista para agendar a limpeza\" em vez de apenas \"Ligar para o dentista\"" - } + }, + "overdueAlert": "Esta tarefa estava no seu plano ontem e não foi concluída.", + "overdueYesterday": "Considere priorizar esta tarefa ou dividi-la em etapas menores.", + "overdueMultipleDays": "Esta tarefa foi adiada {{count}} vezes.", + "content": "Conteúdo", + "noNotes": "Nenhum conteúdo adicionado ainda", + "subtasks": "Subtarefas", + "noSubtasks": "Nenhuma subtarefa ainda", + "recentActivity": "Atividade Recente" }, "projects": { "loading": "Carregando projetos...", diff --git a/public/locales/ro/translation.json b/public/locales/ro/translation.json index 124ce85..85dd72c 100644 --- a/public/locales/ro/translation.json +++ b/public/locales/ro/translation.json @@ -111,7 +111,11 @@ "addToToday": "Adaugă la planul de astăzi", "removeFromToday": "Elimină din planul de astăzi", "setInProgress": "Setează în desfășurare", - "setNotStarted": "Setează ca neluat în lucru" + "setNotStarted": "Setează ca neluat în lucru", + "showSubtasks": "Arată subtask-uri", + "hideSubtasks": "Ascunde subtask-uri", + "edit": "Editează task-ul", + "delete": "Șterge task-ul" }, "timeline": { "activityTimeline": "Cronologia activităților", @@ -134,7 +138,9 @@ "status": "Status", "priority": "Prioritate", "dueDate": "Data limită", - "none": "Niciunul" + "none": "Niciunul", + "recurrenceEndDateChanged": "Data de încheiere a recurenței a fost modificată", + "recurrenceEndDate": "Data de încheiere a recurenței" }, "justNow": "Chiar acum", "minutesAgo": "{{minutes}}m în urmă", @@ -464,7 +470,9 @@ "archived": "Arhivat", "unknown": "Necunoscut", "telegramConnected": "Telegram conectat și polling", - "telegramConnectionProblem": "Problemă de conectare Telegram" + "telegramConnectionProblem": "Problemă de conectare Telegram", + "completed": "Finalizat", + "waiting": "În așteptare" }, "project": { "name": "Numele Proiectului", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Faceți-l mai descriptiv!", "suggestion": "Încercați să adăugați mai multe detalii, cum ar fi \"Sunați dentistul pentru a programa o întâlnire pentru curățare\" în loc de doar \"Sunați dentistul\"" - } + }, + "overdueAlert": "Această sarcină a fost în planul tău ieri și nu a fost finalizată.", + "overdueYesterday": "Ia în considerare prioritizarea acestei sarcini sau împărțirea ei în pași mai mici.", + "overdueMultipleDays": "Această sarcină a fost amânată de {{count}} ori.", + "content": "Conținut", + "noNotes": "Nu a fost adăugat încă niciun conținut", + "subtasks": "Subsarci", + "noSubtasks": "Nu există subsarci încă", + "recentActivity": "Activitate recentă" }, "projects": { "loading": "Se încarcă proiectele...", diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json index 9543d01..ece3127 100644 --- a/public/locales/ru/translation.json +++ b/public/locales/ru/translation.json @@ -111,7 +111,11 @@ "addToToday": "Добавить в план на сегодня", "removeFromToday": "Удалить из плана на сегодня", "setInProgress": "Установить в процессе", - "setNotStarted": "Установить как не начатую" + "setNotStarted": "Установить как не начатую", + "showSubtasks": "Показать подзадачи", + "hideSubtasks": "Скрыть подзадачи", + "edit": "Редактировать задачу", + "delete": "Удалить задачу" }, "timeline": { "activityTimeline": "Хронология активности", @@ -134,7 +138,9 @@ "status": "Статус", "priority": "Приоритет", "dueDate": "Срок выполнения", - "none": "Нет" + "none": "Нет", + "recurrenceEndDateChanged": "Дата окончания повторения изменена", + "recurrenceEndDate": "Дата окончания повторения" }, "justNow": "Только что", "minutesAgo": "{{minutes}}м назад", @@ -464,7 +470,9 @@ "archived": "Архивировано", "unknown": "Неизвестно", "telegramConnected": "Telegram подключен и опрашивает", - "telegramConnectionProblem": "Проблема с подключением Telegram" + "telegramConnectionProblem": "Проблема с подключением Telegram", + "completed": "Завершено", + "waiting": "Ожидание" }, "project": { "name": "Название проекта", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Сделайте это более описательным!", "suggestion": "Попробуйте добавить больше деталей, например, \"Позвонить стоматологу, чтобы записаться на чистку\" вместо просто \"Позвонить стоматологу\"" - } + }, + "overdueAlert": "Эта задача была в вашем плане вчера и не была выполнена.", + "overdueYesterday": "Рассмотрите возможность приоритизировать эту задачу или разбить её на более мелкие шаги.", + "overdueMultipleDays": "Эта задача была отложена {{count}} раз.", + "content": "Содержание", + "noNotes": "Содержимое ещё не добавлено", + "subtasks": "Подзадачи", + "noSubtasks": "Подзадач пока нет", + "recentActivity": "Недавняя активность" }, "projects": { "loading": "Загрузка проектов...", diff --git a/public/locales/sl/translation.json b/public/locales/sl/translation.json index 6f4dcf3..65c63b4 100644 --- a/public/locales/sl/translation.json +++ b/public/locales/sl/translation.json @@ -111,7 +111,11 @@ "addToToday": "Dodaj v današnji načrt", "removeFromToday": "Odstrani iz današnjega načrta", "setInProgress": "Nastavi v poteku", - "setNotStarted": "Nastavi na ni začeto" + "setNotStarted": "Nastavi na ni začeto", + "showSubtasks": "Prikaži podnaloge", + "hideSubtasks": "Skrij podnaloge", + "edit": "Uredi nalogo", + "delete": "Izbriši nalogo" }, "timeline": { "activityTimeline": "Časovnica aktivnosti", @@ -141,7 +145,9 @@ "status": "Status", "priority": "Prioriteta", "dueDate": "Rok", - "none": "Nič" + "none": "Nič", + "recurrenceEndDateChanged": "Datum konca ponavljanja se je spremenil", + "recurrenceEndDate": "Datum konca ponavljanja" } }, "profile": { @@ -464,7 +470,9 @@ "archived": "Arhivirano", "unknown": "Neznano", "telegramConnected": "Telegram povezan in preverja", - "telegramConnectionProblem": "Težava s povezavo Telegram" + "telegramConnectionProblem": "Težava s povezavo Telegram", + "completed": "Dokončano", + "waiting": "Čaka" }, "project": { "name": "Ime projekta", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Naredite ga bolj opisnega!", "suggestion": "Poskusite dodati več podrobnosti, kot je \"Pokličite zobozdravnika, da se dogovorite za termin čiščenja\" namesto samo \"Pokličite zobozdravnika\"" - } + }, + "overdueAlert": "Ta naloga je bila v vašem načrtu včeraj in ni bila dokončana.", + "overdueYesterday": "Razmislite o prioriteti te naloge ali jo razdelite na manjše korake.", + "overdueMultipleDays": "Ta naloga je bila prestavljena {{count}}-krat.", + "content": "Vsebina", + "noNotes": "Še ni dodane vsebine", + "subtasks": "Podnaloge", + "noSubtasks": "Še ni podnalog", + "recentActivity": "Nedavna dejavnost" }, "projects": { "loading": "Nalagam projekte...", diff --git a/public/locales/sv/translation.json b/public/locales/sv/translation.json index 8d358f0..e01ccb4 100644 --- a/public/locales/sv/translation.json +++ b/public/locales/sv/translation.json @@ -111,7 +111,11 @@ "addToToday": "Lägg till i dagens plan", "removeFromToday": "Ta bort från dagens plan", "setInProgress": "Sätt i pågående", - "setNotStarted": "Sätt till ej påbörjad" + "setNotStarted": "Sätt till ej påbörjad", + "showSubtasks": "Visa deluppgifter", + "hideSubtasks": "Dölj deluppgifter", + "edit": "Redigera uppgift", + "delete": "Ta bort uppgift" }, "timeline": { "activityTimeline": "Aktivitetslinje", @@ -141,7 +145,9 @@ "status": "Status", "priority": "Prioritet", "dueDate": "Förfallodatum", - "none": "Inga" + "none": "Inga", + "recurrenceEndDateChanged": "Återkommande slutdatum ändrat", + "recurrenceEndDate": "Återkommande slutdatum" } }, "profile": { @@ -464,7 +470,9 @@ "archived": "Arkiverad", "unknown": "Okänd", "telegramConnected": "Telegram ansluten och polling", - "telegramConnectionProblem": "Problem med Telegram-anslutning" + "telegramConnectionProblem": "Problem med Telegram-anslutning", + "completed": "Slutförd", + "waiting": "Väntar" }, "project": { "name": "Projektets namn", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Gör den mer beskrivande!", "suggestion": "Försök att lägga till mer information som \"Ring tandläkaren för att boka tid för rengöring\" istället för bara \"Ring tandläkaren\"" - } + }, + "overdueAlert": "Denna uppgift var i din plan igår och blev inte slutförd.", + "overdueYesterday": "Överväg att prioritera denna uppgift eller dela upp den i mindre steg.", + "overdueMultipleDays": "Denna uppgift har blivit uppskjuten {{count}} gånger.", + "content": "Innehåll", + "noNotes": "Inga anteckningar tillagda än", + "subtasks": "Deluppgifter", + "noSubtasks": "Inga deluppgifter än", + "recentActivity": "Senaste aktivitet" }, "projects": { "loading": "Laddar projekt...", diff --git a/public/locales/tr/translation.json b/public/locales/tr/translation.json index 13d5fa9..2299d5c 100644 --- a/public/locales/tr/translation.json +++ b/public/locales/tr/translation.json @@ -111,7 +111,11 @@ "addToToday": "Bugün planına ekle", "removeFromToday": "Bugün planından çıkar", "setInProgress": "Devam ediyor olarak ayarla", - "setNotStarted": "Başlamadı olarak ayarla" + "setNotStarted": "Başlamadı olarak ayarla", + "showSubtasks": "Alt görevleri göster", + "hideSubtasks": "Alt görevleri gizle", + "edit": "Görevi düzenle", + "delete": "Görevi sil" }, "timeline": { "activityTimeline": "Etkinlik Zaman Çizelgesi", @@ -134,7 +138,9 @@ "status": "Durum", "priority": "Öncelik", "dueDate": "Son tarih", - "none": "Yok" + "none": "Yok", + "recurrenceEndDateChanged": "Tekrar son tarihi değiştirildi", + "recurrenceEndDate": "Tekrar son tarihi" }, "justNow": "Şu anda", "minutesAgo": "{{minutes}}d önce", @@ -464,7 +470,9 @@ "archived": "Arşivlendi", "unknown": "Bilinmiyor", "telegramConnected": "Telegram bağlı ve sorgulama yapılıyor", - "telegramConnectionProblem": "Telegram bağlantı sorunu" + "telegramConnectionProblem": "Telegram bağlantı sorunu", + "completed": "Tamamlandı", + "waiting": "Bekliyor" }, "project": { "name": "Proje Adı", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Daha açıklayıcı hale getirin!", "suggestion": "\"Temizlik randevusu ayarlamak için dişçiyi ara\" gibi daha fazla detay eklemeyi deneyin, sadece \"Dişçiyi ara\" demek yerine" - } + }, + "overdueAlert": "Bu görev dün planınızdaydı ve tamamlanmadı.", + "overdueYesterday": "Bu görevi önceliklendirmeyi veya daha küçük adımlara ayırmayı düşünün.", + "overdueMultipleDays": "Bu görev {{count}} kez ertelendi.", + "content": "İçerik", + "noNotes": "Henüz içerik eklenmedi", + "subtasks": "Alt görevler", + "noSubtasks": "Henüz alt görev yok", + "recentActivity": "Son Aktivite" }, "projects": { "loading": "Projeler yükleniyor...", diff --git a/public/locales/ua/translation.json b/public/locales/ua/translation.json index 8163b3d..25e8ca5 100644 --- a/public/locales/ua/translation.json +++ b/public/locales/ua/translation.json @@ -111,7 +111,11 @@ "tasksCompleted": "завдання виконані", "metrics": "Метрики", "setInProgress": "Встановити в процесі", - "setNotStarted": "Встановити як не розпочате" + "setNotStarted": "Встановити як не розпочате", + "showSubtasks": "Показати підзадачі", + "hideSubtasks": "Сховати підзадачі", + "edit": "Редагувати задачу", + "delete": "Видалити задачу" }, "timeline": { "activityTimeline": "Хронологія Активності", @@ -134,7 +138,9 @@ "status": "Статус", "priority": "Пріоритет", "dueDate": "Термін", - "none": "Немає" + "none": "Немає", + "recurrenceEndDateChanged": "Дата закінчення повторення змінена", + "recurrenceEndDate": "Дата закінчення повторення" }, "justNow": "Щойно", "minutesAgo": "{{minutes}}м тому", @@ -576,7 +582,15 @@ "updated": "Завдання", "updatedSuccessfully": "успішно оновлено!", "deleted": "Завдання", - "deletedSuccessfully": "успішно видалено!" + "deletedSuccessfully": "успішно видалено!", + "overdueAlert": "Це завдання було у вашому плані вчора і не було завершено.", + "overdueYesterday": "Розгляньте можливість пріоритизувати це завдання або розбити його на менші етапи.", + "overdueMultipleDays": "Це завдання було відкладено {{count}} разів.", + "content": "Зміст", + "noNotes": "Ще не додано жодного змісту", + "subtasks": "Підзавдання", + "noSubtasks": "Ще немає підзавдань", + "recentActivity": "Остання активність" }, "calendar": { "month": "Місяць", @@ -691,7 +705,9 @@ "archived": "Архівовано", "unknown": "Невідомо", "telegramConnected": "Telegram підключено та опитування", - "telegramConnectionProblem": "Проблема з підключенням Telegram" + "telegramConnectionProblem": "Проблема з підключенням Telegram", + "completed": "Завершено", + "waiting": "Очікування" }, "dateIndicators": { "today": "СЬОГОДНІ", diff --git a/public/locales/vi/translation.json b/public/locales/vi/translation.json index c1eeb5d..59a42a0 100644 --- a/public/locales/vi/translation.json +++ b/public/locales/vi/translation.json @@ -111,7 +111,11 @@ "addToToday": "Thêm vào kế hoạch hôm nay", "removeFromToday": "Gỡ bỏ khỏi kế hoạch hôm nay", "setInProgress": "Đặt thành đang tiến hành", - "setNotStarted": "Đặt thành chưa bắt đầu" + "setNotStarted": "Đặt thành chưa bắt đầu", + "showSubtasks": "Hiện các công việc con", + "hideSubtasks": "Ẩn các công việc con", + "edit": "Chỉnh sửa công việc", + "delete": "Xóa công việc" }, "timeline": { "activityTimeline": "Dòng Thời Gian Hoạt Động", @@ -134,7 +138,9 @@ "status": "Trạng thái", "priority": "Độ ưu tiên", "dueDate": "Ngày đến hạn", - "none": "Không có" + "none": "Không có", + "recurrenceEndDateChanged": "Ngày kết thúc chu kỳ đã thay đổi", + "recurrenceEndDate": "Ngày kết thúc chu kỳ" }, "justNow": "Vừa xong", "minutesAgo": "{{minutes}} phút trước", @@ -464,7 +470,9 @@ "archived": "Đã lưu trữ", "unknown": "Không xác định", "telegramConnected": "Telegram đã kết nối và đang kiểm tra", - "telegramConnectionProblem": "Vấn đề kết nối Telegram" + "telegramConnectionProblem": "Vấn đề kết nối Telegram", + "completed": "Đã hoàn thành", + "waiting": "Đang chờ" }, "project": { "name": "Tên Dự Án", @@ -611,7 +619,15 @@ "nameHelper": { "title": "Hãy làm cho nó mô tả hơn!", "suggestion": "Cố gắng thêm nhiều chi tiết như \"Gọi nha sĩ để đặt lịch hẹn làm sạch\" thay vì chỉ \"Gọi nha sĩ\"" - } + }, + "overdueAlert": "Nhiệm vụ này đã có trong kế hoạch của bạn hôm qua và chưa được hoàn thành.", + "overdueYesterday": "Hãy xem xét ưu tiên nhiệm vụ này hoặc chia nhỏ nó thành các bước nhỏ hơn.", + "overdueMultipleDays": "Nhiệm vụ này đã bị hoãn lại {{count}} lần.", + "content": "Nội dung", + "noNotes": "Chưa có nội dung nào được thêm vào", + "subtasks": "Công việc con", + "noSubtasks": "Chưa có công việc con nào", + "recentActivity": "Hoạt động gần đây" }, "projects": { "loading": "Đang tải dự án...", diff --git a/public/locales/zh/translation.json b/public/locales/zh/translation.json index 6e96a4d..7e6cf42 100644 --- a/public/locales/zh/translation.json +++ b/public/locales/zh/translation.json @@ -111,7 +111,11 @@ "addToToday": "添加到今天计划", "removeFromToday": "从今天计划中移除", "setInProgress": "设置为进行中", - "setNotStarted": "设置为未开始" + "setNotStarted": "设置为未开始", + "showSubtasks": "显示子任务", + "hideSubtasks": "隐藏子任务", + "edit": "编辑任务", + "delete": "删除任务" }, "timeline": { "activityTimeline": "活动时间线", @@ -134,7 +138,9 @@ "status": "状态", "priority": "优先级", "dueDate": "截止日期", - "none": "无" + "none": "无", + "recurrenceEndDateChanged": "重复结束日期已更改", + "recurrenceEndDate": "重复结束日期" }, "justNow": "刚刚", "minutesAgo": "{{minutes}}分钟前", @@ -464,7 +470,9 @@ "archived": "已归档", "unknown": "未知", "telegramConnected": "Telegram 已连接并正在轮询", - "telegramConnectionProblem": "Telegram 连接问题" + "telegramConnectionProblem": "Telegram 连接问题", + "completed": "已完成", + "waiting": "等待中" }, "project": { "name": "项目名称", @@ -611,7 +619,15 @@ "nameHelper": { "title": "让它更具描述性!", "suggestion": "尝试添加更多细节,例如 \"打电话给牙医安排清洁预约\" 而不仅仅是 \"打电话给牙医\"" - } + }, + "overdueAlert": "此任务昨天在您的计划中,但未完成。", + "overdueYesterday": "考虑优先处理此任务或将其拆分为更小的步骤。", + "overdueMultipleDays": "此任务已推迟 {{count }} 次。", + "content": "内容", + "noNotes": "尚未添加内容", + "subtasks": "子任务", + "noSubtasks": "尚无子任务", + "recentActivity": "最近活动" }, "projects": { "loading": "加载项目中...",