From fcaf9a9a4db7a77404ec9e2c617badada690346f Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 3 Dec 2025 12:58:24 +0200 Subject: [PATCH] Fix bug 613 (#638) * Fix missing project meta * fixup! Fix missing project meta * fixup! fixup! Fix missing project meta * fixup! fixup! fixup! Fix missing project meta --- .../components/Shared/ProjectDropdown.tsx | 19 +- frontend/components/Task/TaskDetails.tsx | 14 + .../Task/TaskDetails/TaskDetailsHeader.tsx | 258 ++++++++++++------ .../Task/TaskDetails/TaskProjectCard.tsx | 92 +++---- .../Task/TaskDetails/TaskTagsCard.tsx | 32 ++- public/locales/ar/translation.json | 12 +- public/locales/bg/translation.json | 12 +- public/locales/da/translation.json | 12 +- public/locales/de/translation.json | 12 +- public/locales/el/translation.json | 12 +- public/locales/en/translation.json | 6 + public/locales/es/translation.json | 12 +- public/locales/fi/translation.json | 12 +- public/locales/fr/translation.json | 12 +- public/locales/id/translation.json | 12 +- public/locales/it/translation.json | 12 +- public/locales/jp/translation.json | 12 +- public/locales/ko/translation.json | 12 +- public/locales/nl/translation.json | 12 +- public/locales/no/translation.json | 12 +- public/locales/pl/translation.json | 12 +- public/locales/pt/translation.json | 12 +- public/locales/ro/translation.json | 12 +- public/locales/ru/translation.json | 12 +- public/locales/sl/translation.json | 12 +- public/locales/sv/translation.json | 12 +- public/locales/tr/translation.json | 12 +- public/locales/ua/translation.json | 12 +- public/locales/vi/translation.json | 12 +- public/locales/zh/translation.json | 12 +- 30 files changed, 487 insertions(+), 222 deletions(-) diff --git a/frontend/components/Shared/ProjectDropdown.tsx b/frontend/components/Shared/ProjectDropdown.tsx index 1e17bcb..6835fb0 100644 --- a/frontend/components/Shared/ProjectDropdown.tsx +++ b/frontend/components/Shared/ProjectDropdown.tsx @@ -236,7 +236,7 @@ const ProjectDropdown: React.FC = ({ {dropdownOpen && !selectedProject && (
{(() => { // Show filtered projects if user is typing, otherwise show all projects @@ -250,13 +250,26 @@ const ProjectDropdown: React.FC = ({ key={project.id} type="button" onClick={() => onProjectSelection(project)} - className={`block w-full text-gray-700 dark:text-gray-300 text-left px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors ${ + className={`flex items-center gap-3 w-full text-gray-700 dark:text-gray-300 text-left px-4 py-2 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors ${ index === highlightedIndex ? 'bg-blue-50 dark:bg-blue-900/30' : '' }`} > - {project.name} +
+ {project.image_url ? ( + {project.name} + ) : ( +
+ )} +
+ + {project.name} + )) ) : ( diff --git a/frontend/components/Task/TaskDetails.tsx b/frontend/components/Task/TaskDetails.tsx index 2e0a970..3224dc0 100644 --- a/frontend/components/Task/TaskDetails.tsx +++ b/frontend/components/Task/TaskDetails.tsx @@ -927,6 +927,17 @@ const TaskDetails: React.FC = () => { return `/project/${project.id}`; }; + const getTagLink = (tag: any) => { + if (tag.uid) { + const slug = tag.name + .toLowerCase() + .replace(/[^a-z0-9]+/g, '-') + .replace(/^-|-$/g, ''); + return `/tag/${tag.uid}-${slug}`; + } + return `/tag/${encodeURIComponent(tag.name)}`; + }; + // Wrapper handlers for new components const handleTitleUpdate = async (newTitle: string) => { if (!task?.uid || !newTitle.trim()) { @@ -1157,6 +1168,8 @@ const TaskDetails: React.FC = () => { onTitleUpdate={handleTitleUpdate} onEdit={handleEdit} onDelete={handleDeleteClick} + getProjectLink={getProjectLink} + getTagLink={getTagLink} /> {/* Summary and Overdue Alerts */} @@ -1232,6 +1245,7 @@ const TaskDetails: React.FC = () => { isLoadingTags={tagsStore.isLoading} onUpdate={handleTagsUpdate} onLoadTags={() => tagsStore.loadTags()} + getTagLink={getTagLink} /> {/* Priority Section */} diff --git a/frontend/components/Task/TaskDetails/TaskDetailsHeader.tsx b/frontend/components/Task/TaskDetails/TaskDetailsHeader.tsx index 96f9bbf..7da24b5 100644 --- a/frontend/components/Task/TaskDetails/TaskDetailsHeader.tsx +++ b/frontend/components/Task/TaskDetails/TaskDetailsHeader.tsx @@ -1,6 +1,12 @@ import React, { useRef, useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; -import { CheckIcon, XMarkIcon } from '@heroicons/react/24/outline'; +import { + CheckIcon, + XMarkIcon, + FolderIcon, + TagIcon, +} from '@heroicons/react/24/outline'; +import { Link } from 'react-router-dom'; import TaskPriorityIcon from '../TaskPriorityIcon'; import { Task } from '../../../entities/Task'; @@ -10,6 +16,8 @@ interface TaskDetailsHeaderProps { onTitleUpdate: (newTitle: string) => Promise; onEdit: () => void; onDelete: () => void; + getProjectLink?: (project: any) => string; + getTagLink?: (tag: any) => string; } const TaskDetailsHeader: React.FC = ({ @@ -18,6 +26,8 @@ const TaskDetailsHeader: React.FC = ({ onTitleUpdate, onEdit, onDelete, + getProjectLink, + getTagLink, }) => { const { t } = useTranslation(); const [isEditingTitle, setIsEditingTitle] = useState(false); @@ -80,99 +90,181 @@ const TaskDetailsHeader: React.FC = ({ }; return ( -
-
- -
- {isEditingTitle ? ( -
- setEditedTitle(e.target.value)} - onKeyDown={handleTitleKeyDown} - onBlur={handleSaveTitle} - className="text-2xl font-normal text-gray-900 dark:text-gray-100 bg-white dark:bg-gray-800 border-2 border-blue-500 dark:border-blue-400 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400 w-full" - placeholder={t( - 'task.titlePlaceholder', - 'Enter task title' +
+
+
+
+ +
+
+ {isEditingTitle ? ( +
+ + setEditedTitle(e.target.value) + } + onKeyDown={handleTitleKeyDown} + onBlur={handleSaveTitle} + className="text-2xl font-normal text-gray-900 dark:text-gray-100 bg-white dark:bg-gray-800 border-2 border-blue-500 dark:border-blue-400 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400 w-full" + placeholder={t( + 'task.titlePlaceholder', + 'Enter task title' + )} + /> + + +
+ ) : ( + <> +

+ {task.name} +

+ {/* Project and tags display below title */} + {(task.Project || + (task.tags && task.tags.length > 0)) && ( +
+ {task.Project && ( + + e.stopPropagation() + } + > + + {task.Project.name} + + )} + {task.tags && task.tags.length > 0 && ( +
+ +
+ {task.tags.map( + ( + tag: any, + index: number + ) => ( + + + e.stopPropagation() + } + > + {tag.name} + + {index < + task.tags! + .length - + 1 && ( + + , + + )} + + ) + )} +
+
+ )} +
)} - /> + + )} +
+
+
+ + {actionsMenuOpen && ( +
- ) : ( -

- {task.name} -

)}
-
- - {actionsMenuOpen && ( -
- - -
- )} -
); }; diff --git a/frontend/components/Task/TaskDetails/TaskProjectCard.tsx b/frontend/components/Task/TaskDetails/TaskProjectCard.tsx index 0ccede1..117bd37 100644 --- a/frontend/components/Task/TaskDetails/TaskProjectCard.tsx +++ b/frontend/components/Task/TaskDetails/TaskProjectCard.tsx @@ -1,7 +1,7 @@ import React, { useRef, useState, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -import { ArrowRightIcon, XMarkIcon } from '@heroicons/react/24/outline'; +import { ArrowRightIcon } from '@heroicons/react/24/outline'; import ProjectDropdown from '../../Shared/ProjectDropdown'; import { Project } from '../../../entities/Project'; import { Task } from '../../../entities/Task'; @@ -101,69 +101,53 @@ const TaskProjectCard: React.FC = ({ isCreatingProject={isCreatingProject} onShowAllProjects={handleShowAllProjects} allProjects={projects} - selectedProject={null} + selectedProject={task.Project || null} onClearProject={handleClearProject} /> ) : task.Project ? (
- - e.stopPropagation()} - className="p-1.5 rounded-full text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 flex-shrink-0 ml-2" - title={t( + {task.Project.image_url ? ( + {task.Project.name} + ) : ( +
+ )} +
+
+
+
setProjectDropdownOpen(true)} + > + {task.Project.name} +
+ e.stopPropagation()} + className="p-1.5 rounded-full text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:bg-blue-50 dark:hover:bg-blue-900/30 transition-colors flex-shrink-0" + title={t( + 'project.viewProject', + 'Go to project' + )} + > + + + {t( 'project.viewProject', 'Go to project' )} - > - - - {t( - 'project.viewProject', - 'Go to project' - )} - - -
+ +
- +
) : (
Promise; onLoadTags: () => void; + getTagLink?: (tag: any) => string; } const TaskTagsCard: React.FC = ({ @@ -21,6 +23,7 @@ const TaskTagsCard: React.FC = ({ isLoadingTags, onUpdate, onLoadTags, + getTagLink, }) => { const { t } = useTranslation(); const [isEditing, setIsEditing] = useState(false); @@ -95,25 +98,34 @@ const TaskTagsCard: React.FC = ({ ) : task.tags && task.tags.length > 0 ? (
{task.tags.map((tag: any, index: number) => ( -
- - + + e.stopPropagation()} + className="p-1.5 rounded-full text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:bg-blue-50 dark:hover:bg-blue-900/30 transition-colors flex-shrink-0" + title={t('tag.viewTag', 'Go to tag')} + > + + +
))}
) : ( diff --git a/public/locales/ar/translation.json b/public/locales/ar/translation.json index 979d073..7d776bf 100644 --- a/public/locales/ar/translation.json +++ b/public/locales/ar/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "أسبوع من الشهر", "recurrenceEndDate": "تاريخ الانتهاء (اختياري)", "completionBased": "كرر بعد الانتهاء", - "repeatOn": "التكرار في" + "repeatOn": "التكرار في", + "deferUntil": "تأجيل حتى" }, "projectSearchPlaceholder": "ابحث أو أنشئ مشروعًا...", "noMatchingProjects": "لا توجد مشاريع مطابقة", @@ -460,7 +461,8 @@ "noVerb": "ما الإجراء المحدد الذي تحتاج إلى اتخاذه؟ حاول البدء بفعل.", "vague": "حاول البدء بفعل عمل مثل \"اتصل\"، \"اكتب\"، \"حدد موعدًا\"، أو \"ابحث\"" }, - "selectAtLeastOneDay": "يرجى اختيار يوم واحد على الأقل" + "selectAtLeastOneDay": "يرجى اختيار يوم واحد على الأقل", + "deferUntilPlaceholder": "اختر تاريخ ووقت التأجيل" }, "noteTitle": "عنوان الملاحظة", "noteContent": "محتوى الملاحظة", @@ -765,7 +767,11 @@ "parentTask": "المهمة الرئيسية", "includingToday": "بما في ذلك اليوم", "has": "يمتلك", - "fromProject": "من المشروع" + "fromProject": "من المشروع", + "deferUntil": "تأجيل حتى", + "noDeferUntil": "لا تأجيل حتى", + "deferUntilUpdated": "تأجيل حتى يتم التحديث بنجاح", + "deferUntilUpdateError": "فشل في تحديث التأجيل حتى" }, "projects": { "loading": "جارٍ تحميل المشاريع...", diff --git a/public/locales/bg/translation.json b/public/locales/bg/translation.json index f70ebe8..bc56eb9 100644 --- a/public/locales/bg/translation.json +++ b/public/locales/bg/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Седмица от месеца", "recurrenceEndDate": "Краен срок (по избор)", "completionBased": "Повторете след завършване", - "repeatOn": "Повтаряй на" + "repeatOn": "Повтаряй на", + "deferUntil": "Отложи до" }, "projectSearchPlaceholder": "Търсене или създаване на проект...", "noMatchingProjects": "Няма съвпадащи проекти", @@ -460,7 +461,8 @@ "noVerb": "Какво конкретно действие трябва да предприемете? Опитайте да започнете с глагол.", "vague": "Опитайте да започнете с глагол за действие като \"Обади се\", \"Напиши\", \"Насрочи\" или \"Изследвай\"" }, - "selectAtLeastOneDay": "Моля, изберете поне един ден" + "selectAtLeastOneDay": "Моля, изберете поне един ден", + "deferUntilPlaceholder": "Изберете дата и час за отлагане" }, "noteTitle": "Заглавие на бележка", "noteContent": "Съдържание на бележка", @@ -765,7 +767,11 @@ "parentTask": "Родителска задача", "includingToday": "включително днес", "has": "има", - "fromProject": "от проекта" + "fromProject": "от проекта", + "deferUntil": "Отложи до", + "noDeferUntil": "Няма отлагане до", + "deferUntilUpdated": "Отложи до успешно актуализиране", + "deferUntilUpdateError": "Неуспешно актуализиране на отлагането до" }, "projects": { "loading": "Зареждане на проекти...", diff --git a/public/locales/da/translation.json b/public/locales/da/translation.json index 0c4ece3..b33f963 100644 --- a/public/locales/da/translation.json +++ b/public/locales/da/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Uge i måneden", "recurrenceEndDate": "Slutdato (valgfri)", "completionBased": "Gentag efter fuldførelse", - "repeatOn": "Gentag på" + "repeatOn": "Gentag på", + "deferUntil": "Udsæt indtil" }, "projectSearchPlaceholder": "Søg eller opret et projekt...", "noMatchingProjects": "Ingen matchende projekter", @@ -460,7 +461,8 @@ "noVerb": "Hvilken specifik handling skal du tage? Prøv at starte med et verbum.", "vague": "Prøv at starte med et handlingsverb som \"Ring\", \"Skriv\", \"Planlæg\" eller \"Undersøg\"" }, - "selectAtLeastOneDay": "Vælg venligst mindst én dag" + "selectAtLeastOneDay": "Vælg venligst mindst én dag", + "deferUntilPlaceholder": "Vælg udsætte indtil dato og tid" }, "noteTitle": "Notetitel", "noteContent": "Noteindhold", @@ -765,7 +767,11 @@ "parentTask": "Overordnet opgave", "includingToday": "inklusive i dag", "has": "har", - "fromProject": "fra projektet" + "fromProject": "fra projektet", + "deferUntil": "Udsæt indtil", + "noDeferUntil": "Ingen udsættelse indtil", + "deferUntilUpdated": "Udsæt indtil opdateret med succes", + "deferUntilUpdateError": "Fejl ved opdatering af udsættelse indtil" }, "projects": { "loading": "Indlæser projekter...", diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json index 5879f23..889f949 100644 --- a/public/locales/de/translation.json +++ b/public/locales/de/translation.json @@ -209,7 +209,8 @@ "priority": "Priorität", "dueDate": "Fälligkeitsdatum", "note": "Notiz", - "repeatOn": "Wiederholen am" + "repeatOn": "Wiederholen am", + "deferUntil": "Aufschieben bis" }, "recurrenceSettings": "Wiederholungseinstellungen", "completionBasedHelp": "Falls aktiviert, wird die nächste Aufgabe basierend auf dem Abschlussdatum statt dem Fälligkeitsdatum erstellt", @@ -232,7 +233,8 @@ "noVerb": "Welche spezifische Aktion müssen Sie durchführen? Versuchen Sie, mit einem Verb zu beginnen.", "vague": "Versuchen Sie, mit einem Aktionsverb wie \"Anrufen\", \"Schreiben\", \"Planen\" oder \"Forschen\" zu beginnen" }, - "selectAtLeastOneDay": "Bitte wählen Sie mindestens einen Tag aus" + "selectAtLeastOneDay": "Bitte wählen Sie mindestens einen Tag aus", + "deferUntilPlaceholder": "Wählen Sie das Datum und die Uhrzeit für das Aufschieben aus" }, "noteTitle": "Notiz-Titel", "noteContent": "Notiz-Inhalt", @@ -699,7 +701,11 @@ "parentTask": "Übergeordnete Aufgabe", "includingToday": "einschließlich heute", "has": "hat", - "fromProject": "vom Projekt" + "fromProject": "vom Projekt", + "deferUntil": "Bis später verschieben", + "noDeferUntil": "Keine Verschiebung bis", + "deferUntilUpdated": "Bis zur erfolgreichen Aktualisierung verschieben", + "deferUntilUpdateError": "Aktualisierung der Verschiebung bis fehlgeschlagen" }, "calendar": { "month": "Monat", diff --git a/public/locales/el/translation.json b/public/locales/el/translation.json index 418d007..287d42a 100644 --- a/public/locales/el/translation.json +++ b/public/locales/el/translation.json @@ -574,7 +574,8 @@ "weekOfMonth": "Εβδομάδα του μήνα", "recurrenceEndDate": "Ημερομηνία λήξης (προαιρετικό)", "completionBased": "Επανάληψη μετά την ολοκλήρωση", - "repeatOn": "Επανάληψη στις" + "repeatOn": "Επανάληψη στις", + "deferUntil": "Αναβολή μέχρι" }, "recurrenceSettings": "Ρυθμίσεις Επανάληψης", "completionBasedHelp": "Αν είναι ενεργοποιημένο, η επόμενη εργασία θα δημιουργηθεί με βάση την ημερομηνία ολοκλήρωσης αντί της ημερομηνίας λήξης", @@ -592,7 +593,8 @@ "noVerb": "Ποια συγκεκριμένη ενέργεια πρέπει να κάνετε; Δοκιμάστε να ξεκινήσετε με ένα ρήμα.", "vague": "Δοκιμάστε να ξεκινήσετε με ένα ρήμα δράσης όπως \"Καλέστε\", \"Γράψτε\", \"Προγραμματίστε\", ή \"Έρευνα\"" }, - "selectAtLeastOneDay": "Παρακαλώ επιλέξτε τουλάχιστον μία ημέρα" + "selectAtLeastOneDay": "Παρακαλώ επιλέξτε τουλάχιστον μία ημέρα", + "deferUntilPlaceholder": "Επιλέξτε ημερομηνία και ώρα αναβολής" }, "projectDescriptionPlaceholder": "Εισάγετε περιγραφή έργου" }, @@ -721,7 +723,11 @@ "parentTask": "Γονική Εργασία", "includingToday": "συμπεριλαμβανομένης της σημερινής ημέρας", "has": "έχει", - "fromProject": "από το έργο" + "fromProject": "από το έργο", + "deferUntil": "Αναβολή μέχρι", + "noDeferUntil": "Καμία αναβολή μέχρι", + "deferUntilUpdated": "Αναβολή μέχρι να ενημερωθεί επιτυχώς", + "deferUntilUpdateError": "Αποτυχία ενημέρωσης αναβολής μέχρι" }, "dateFormats": { "long": "EEEE, d MMMM yyyy", diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index 2fd0992..234721f 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -430,6 +430,7 @@ "status": "Status", "priority": "Priority", "dueDate": "Due Date", + "deferUntil": "Defer Until", "note": "Note", "recurrenceType": "Repeat", "recurrenceInterval": "Every", @@ -448,6 +449,7 @@ "recurrenceSettings": "Recurrence Settings", "completionBasedHelp": "If checked, the next task will be created based on completion date instead of due date", "dueDatePlaceholder": "Select due date", + "deferUntilPlaceholder": "Select defer until date and time", "endDatePlaceholder": "Select end date", "nameHelper": { "title": "Make it more descriptive!", @@ -759,6 +761,10 @@ "projectClearError": "Failed to clear project", "priorityUpdated": "Priority updated successfully", "priorityUpdateError": "Failed to update priority", + "deferUntil": "Defer Until", + "noDeferUntil": "No defer until", + "deferUntilUpdated": "Defer until updated successfully", + "deferUntilUpdateError": "Failed to update defer until", "status": { "notStarted": "not started", "inProgress": "in progress", diff --git a/public/locales/es/translation.json b/public/locales/es/translation.json index 19f160b..b2f46cf 100644 --- a/public/locales/es/translation.json +++ b/public/locales/es/translation.json @@ -542,7 +542,8 @@ "weekOfMonth": "Semana del mes", "recurrenceEndDate": "Fecha de fin (opcional)", "completionBased": "Repetir después de completar", - "repeatOn": "Repetir en" + "repeatOn": "Repetir en", + "deferUntil": "Aplazar hasta" }, "projectSearchPlaceholder": "Buscar o crear un proyecto...", "noMatchingProjects": "No hay proyectos coincidentes", @@ -564,7 +565,8 @@ "noVerb": "¿Qué acción específica necesitas tomar? Intenta comenzar con un verbo.", "vague": "Intenta comenzar con un verbo de acción como \"Llamar\", \"Escribir\", \"Programar\", o \"Investigar\"" }, - "selectAtLeastOneDay": "Por favor, selecciona al menos un día" + "selectAtLeastOneDay": "Por favor, selecciona al menos un día", + "deferUntilPlaceholder": "Seleccione la fecha y hora hasta la cual aplazar" }, "projectDescriptionPlaceholder": "Ingrese la descripción del proyecto" }, @@ -730,7 +732,11 @@ "parentTask": "Tarea principal", "includingToday": "incluyendo hoy", "has": "tiene", - "fromProject": "del proyecto" + "fromProject": "del proyecto", + "deferUntil": "Aplazar hasta", + "noDeferUntil": "No aplazar hasta", + "deferUntilUpdated": "Aplazar hasta que se actualice correctamente", + "deferUntilUpdateError": "Error al actualizar el aplazamiento" }, "dateIndicators": { "today": "HOY", diff --git a/public/locales/fi/translation.json b/public/locales/fi/translation.json index be1d2c5..9c1d2b7 100644 --- a/public/locales/fi/translation.json +++ b/public/locales/fi/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Kuukauden viikko", "recurrenceEndDate": "Loppupäivämäärä (valinnainen)", "completionBased": "Toista valmistumisen jälkeen", - "repeatOn": "Toista" + "repeatOn": "Toista", + "deferUntil": "Viivytä kunnes" }, "projectSearchPlaceholder": "Etsi tai luo projekti...", "noMatchingProjects": "Ei vastaavia projekteja", @@ -460,7 +461,8 @@ "noVerb": "Mitä erityistä toimintoa sinun tarvitsee tehdä? Yritä aloittaa verbillä.", "vague": "Yritä aloittaa toimintaverbillä kuten \"Soita\", \"Kirjoita\", \"Aikatauluta\" tai \"Tutki\"" }, - "selectAtLeastOneDay": "Valitse vähintään yksi päivä" + "selectAtLeastOneDay": "Valitse vähintään yksi päivä", + "deferUntilPlaceholder": "Valitse viivytyspäivämäärä ja -aika" }, "noteTitle": "Muistion Otsikko", "noteContent": "Muistion Sisältö", @@ -765,7 +767,11 @@ "parentTask": "Ylätason tehtävä", "includingToday": "mukana tänään", "has": "on", - "fromProject": "projektista" + "fromProject": "projektista", + "deferUntil": "Viivytä kunnes", + "noDeferUntil": "Ei viivytystä ennen", + "deferUntilUpdated": "Viivytä kunnes päivitys onnistuu", + "deferUntilUpdateError": "Viivytyksen päivittäminen epäonnistui" }, "projects": { "loading": "Ladataan projekteja...", diff --git a/public/locales/fr/translation.json b/public/locales/fr/translation.json index 7700dd1..22c9729 100644 --- a/public/locales/fr/translation.json +++ b/public/locales/fr/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Semaine du mois", "recurrenceEndDate": "Date de fin (optionnel)", "completionBased": "Répéter après achèvement", - "repeatOn": "Répéter le" + "repeatOn": "Répéter le", + "deferUntil": "Reporter jusqu'à" }, "projectSearchPlaceholder": "Rechercher ou créer un projet...", "noMatchingProjects": "Aucun projet correspondant", @@ -460,7 +461,8 @@ "noVerb": "Quelle action spécifique devez-vous entreprendre ? Essayez de commencer par un verbe.", "vague": "Essayez de commencer par un verbe d'action comme \"Appeler\", \"Écrire\", \"Planifier\" ou \"Rechercher\"" }, - "selectAtLeastOneDay": "Veuillez sélectionner au moins un jour" + "selectAtLeastOneDay": "Veuillez sélectionner au moins un jour", + "deferUntilPlaceholder": "Sélectionnez la date et l'heure de report" }, "noteTitle": "Titre de la note", "noteContent": "Contenu de la note", @@ -765,7 +767,11 @@ "parentTask": "Tâche parente", "includingToday": "y compris aujourd'hui", "has": "a", - "fromProject": "du projet" + "fromProject": "du projet", + "deferUntil": "Différer jusqu'à", + "noDeferUntil": "Pas de différé jusqu'à", + "deferUntilUpdated": "Différer jusqu'à mise à jour réussie", + "deferUntilUpdateError": "Échec de la mise à jour du différé jusqu'à" }, "projects": { "loading": "Chargement des projets...", diff --git a/public/locales/id/translation.json b/public/locales/id/translation.json index 8a8265c..2663e73 100644 --- a/public/locales/id/translation.json +++ b/public/locales/id/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Minggu dalam bulan", "recurrenceEndDate": "Tanggal akhir (opsional)", "completionBased": "Ulangi setelah penyelesaian", - "repeatOn": "Ulangi pada" + "repeatOn": "Ulangi pada", + "deferUntil": "Tunda Hingga" }, "projectSearchPlaceholder": "Cari atau buat proyek...", "noMatchingProjects": "Tidak ada proyek yang cocok", @@ -460,7 +461,8 @@ "noVerb": "Tindakan spesifik apa yang perlu Anda ambil? Cobalah mulai dengan kata kerja.", "vague": "Cobalah mulai dengan kata kerja aksi seperti \"Hubungi\", \"Tulis\", \"Jadwalkan\", atau \"Teliti\"" }, - "selectAtLeastOneDay": "Silakan pilih setidaknya satu hari" + "selectAtLeastOneDay": "Silakan pilih setidaknya satu hari", + "deferUntilPlaceholder": "Pilih tanggal dan waktu tunda hingga" }, "noteTitle": "Judul Catatan", "noteContent": "Konten Catatan", @@ -765,7 +767,11 @@ "parentTask": "Tugas Induk", "includingToday": "termasuk hari ini", "has": "memiliki", - "fromProject": "dari proyek" + "fromProject": "dari proyek", + "deferUntil": "Tunda Hingga", + "noDeferUntil": "Tidak ada tunda hingga", + "deferUntilUpdated": "Tunda hingga diperbarui dengan sukses", + "deferUntilUpdateError": "Gagal memperbarui tunda hingga" }, "projects": { "loading": "Memuat proyek...", diff --git a/public/locales/it/translation.json b/public/locales/it/translation.json index 5243afe..66f0c62 100644 --- a/public/locales/it/translation.json +++ b/public/locales/it/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Settimana del mese", "recurrenceEndDate": "Data di fine (opzionale)", "completionBased": "Ripeti dopo il completamento", - "repeatOn": "Ripeti il" + "repeatOn": "Ripeti il", + "deferUntil": "Rimanda fino a" }, "projectSearchPlaceholder": "Cerca o crea un progetto...", "noMatchingProjects": "Nessun progetto corrispondente", @@ -460,7 +461,8 @@ "noVerb": "Quale azione specifica devi intraprendere? Prova a iniziare con un verbo.", "vague": "Prova a iniziare con un verbo d'azione come \"Chiamare\", \"Scrivere\", \"Programmare\", o \"Ricercare\"" }, - "selectAtLeastOneDay": "Seleziona almeno un giorno" + "selectAtLeastOneDay": "Seleziona almeno un giorno", + "deferUntilPlaceholder": "Seleziona la data e l'ora di rimando" }, "noteTitle": "Titolo Nota", "noteContent": "Contenuto Nota", @@ -765,7 +767,11 @@ "parentTask": "Attività principale", "includingToday": "incluso oggi", "has": "ha", - "fromProject": "dal progetto" + "fromProject": "dal progetto", + "deferUntil": "Rimanda fino a", + "noDeferUntil": "Nessun rimando fino a", + "deferUntilUpdated": "Rimandato fino a aggiornato con successo", + "deferUntilUpdateError": "Impossibile aggiornare il rimando fino a" }, "projects": { "loading": "Caricamento progetti...", diff --git a/public/locales/jp/translation.json b/public/locales/jp/translation.json index 5b998bc..e395440 100644 --- a/public/locales/jp/translation.json +++ b/public/locales/jp/translation.json @@ -424,7 +424,8 @@ "priority": "優先度", "dueDate": "期限日", "note": "ノート", - "repeatOn": "繰り返し" + "repeatOn": "繰り返し", + "deferUntil": "延期するまで" }, "recurrenceSettings": "繰り返し設定", "completionBasedHelp": "チェックすると、次のタスクは期限日ではなく完了日に基づいて作成されます", @@ -447,7 +448,8 @@ "noVerb": "具体的な行動は何ですか? 動詞で始めてみてください。", "vague": "\"電話する\"、\"書く\"、\"予定する\"、\"調査する\"などの動詞で始めてみてください" }, - "selectAtLeastOneDay": "少なくとも1日を選択してください" + "selectAtLeastOneDay": "少なくとも1日を選択してください", + "deferUntilPlaceholder": "延期する日付と時間を選択" }, "areaName": "エリア名", "areaDescription": "エリアの説明", @@ -835,7 +837,11 @@ "parentTask": "親タスク", "includingToday": "今日を含む", "has": "持っている", - "fromProject": "プロジェクトから" + "fromProject": "プロジェクトから", + "deferUntil": "延期するまで", + "noDeferUntil": "延期なし", + "deferUntilUpdated": "正常に延期が更新されました", + "deferUntilUpdateError": "延期の更新に失敗しました" }, "calendar": { "month": "月", diff --git a/public/locales/ko/translation.json b/public/locales/ko/translation.json index 812232a..9923248 100644 --- a/public/locales/ko/translation.json +++ b/public/locales/ko/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "월의 주", "recurrenceEndDate": "종료일 (선택 사항)", "completionBased": "완료 후 반복", - "repeatOn": "반복" + "repeatOn": "반복", + "deferUntil": "연기할 때까지" }, "projectSearchPlaceholder": "프로젝트 검색 또는 생성...", "noMatchingProjects": "일치하는 프로젝트가 없습니다", @@ -460,7 +461,8 @@ "noVerb": "어떤 특정 행동을 취해야 하나요? 동사로 시작해보세요.", "vague": "\"전화하기\", \"작성하기\", \"일정 잡기\", 또는 \"조사하기\"와 같은 행동 동사로 시작해보세요" }, - "selectAtLeastOneDay": "하루 이상 선택해 주세요" + "selectAtLeastOneDay": "하루 이상 선택해 주세요", + "deferUntilPlaceholder": "연기할 날짜와 시간을 선택하세요" }, "noteTitle": "노트 제목", "noteContent": "노트 내용", @@ -765,7 +767,11 @@ "parentTask": "상위 작업", "includingToday": "오늘 포함", "has": "있음", - "fromProject": "프로젝트에서" + "fromProject": "프로젝트에서", + "deferUntil": "연기할 때까지", + "noDeferUntil": "연기할 때까지 없음", + "deferUntilUpdated": "연기할 때까지 성공적으로 업데이트됨", + "deferUntilUpdateError": "연기할 때까지 업데이트 실패" }, "projects": { "loading": "프로젝트 로딩 중...", diff --git a/public/locales/nl/translation.json b/public/locales/nl/translation.json index fb6525d..6365322 100644 --- a/public/locales/nl/translation.json +++ b/public/locales/nl/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Week van de maand", "recurrenceEndDate": "Einddatum (optioneel)", "completionBased": "Herhaal na voltooiing", - "repeatOn": "Herhaal op" + "repeatOn": "Herhaal op", + "deferUntil": "Uitstellen Tot" }, "projectSearchPlaceholder": "Zoek of maak een project...", "noMatchingProjects": "Geen overeenkomende projecten", @@ -460,7 +461,8 @@ "noVerb": "Welke specifieke actie moet je ondernemen? Probeer te beginnen met een werkwoord.", "vague": "Probeer te beginnen met een actie werkwoord zoals \"Bel\", \"Schrijf\", \"Plan\" of \"Onderzoek\"" }, - "selectAtLeastOneDay": "Selecteer alstublieft minimaal één dag" + "selectAtLeastOneDay": "Selecteer alstublieft minimaal één dag", + "deferUntilPlaceholder": "Selecteer uitstel tot datum en tijd" }, "noteTitle": "Notitietitel", "noteContent": "Notitie-inhoud", @@ -765,7 +767,11 @@ "parentTask": "Bovenliggende Taak", "includingToday": "inclusief vandaag", "has": "heeft", - "fromProject": "van het project" + "fromProject": "van het project", + "deferUntil": "Uitstellen Tot", + "noDeferUntil": "Geen uitstel tot", + "deferUntilUpdated": "Uitstel tot succesvol bijgewerkt", + "deferUntilUpdateError": "Bijwerken van uitstel tot is mislukt" }, "projects": { "loading": "Projecten laden...", diff --git a/public/locales/no/translation.json b/public/locales/no/translation.json index 3f0c0be..948ff95 100644 --- a/public/locales/no/translation.json +++ b/public/locales/no/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Uke i måneden", "recurrenceEndDate": "Sluttdato (valgfritt)", "completionBased": "Gjenta etter fullføring", - "repeatOn": "Gjenta på" + "repeatOn": "Gjenta på", + "deferUntil": "Utsett til" }, "projectSearchPlaceholder": "Søk eller opprett et prosjekt...", "noMatchingProjects": "Ingen matchende prosjekter", @@ -460,7 +461,8 @@ "noVerb": "Hvilken spesifikk handling må du ta? Prøv å starte med et verb.", "vague": "Prøv å starte med et handlingsverb som \"Ring\", \"Skriv\", \"Planlegg\" eller \"Undersøk\"" }, - "selectAtLeastOneDay": "Vennligst velg minst én dag" + "selectAtLeastOneDay": "Vennligst velg minst én dag", + "deferUntilPlaceholder": "Velg dato og klokkeslett for utsettelse" }, "noteTitle": "Notattittel", "noteContent": "Notatinnhold", @@ -765,7 +767,11 @@ "parentTask": "Foreldrepågave", "includingToday": "inkludert i dag", "has": "har", - "fromProject": "fra prosjektet" + "fromProject": "fra prosjektet", + "deferUntil": "Utsett til", + "noDeferUntil": "Ingen utsettelse til", + "deferUntilUpdated": "Utsettelse oppdatert vellykket", + "deferUntilUpdateError": "Kunne ikke oppdatere utsettelse" }, "projects": { "loading": "Laster prosjekter...", diff --git a/public/locales/pl/translation.json b/public/locales/pl/translation.json index a384ae3..26347b9 100644 --- a/public/locales/pl/translation.json +++ b/public/locales/pl/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Tydzień miesiąca", "recurrenceEndDate": "Data zakończenia (opcjonalnie)", "completionBased": "Powtórz po zakończeniu", - "repeatOn": "Powtarzaj w" + "repeatOn": "Powtarzaj w", + "deferUntil": "Odłóż do" }, "projectSearchPlaceholder": "Szukaj lub utwórz projekt...", "noMatchingProjects": "Brak pasujących projektów", @@ -460,7 +461,8 @@ "noVerb": "Jaką konkretną czynność musisz wykonać? Spróbuj zacząć od czasownika.", "vague": "Spróbuj zacząć od czasownika akcji, takiego jak \"Zadzwoń\", \"Napisz\", \"Zaplanuj\" lub \"Zbadaj\"" }, - "selectAtLeastOneDay": "Proszę wybrać przynajmniej jeden dzień" + "selectAtLeastOneDay": "Proszę wybrać przynajmniej jeden dzień", + "deferUntilPlaceholder": "Wybierz datę i godzinę odłożenia" }, "noteTitle": "Tytuł notatki", "noteContent": "Treść notatki", @@ -765,7 +767,11 @@ "parentTask": "Zadanie nadrzędne", "includingToday": "w tym dzisiaj", "has": "ma", - "fromProject": "z projektu" + "fromProject": "z projektu", + "deferUntil": "Odłóż do", + "noDeferUntil": "Brak odłożenia do", + "deferUntilUpdated": "Odłożono do zaktualizowania pomyślnie", + "deferUntilUpdateError": "Nie udało się zaktualizować odłożenia do" }, "projects": { "loading": "Ładowanie projektów...", diff --git a/public/locales/pt/translation.json b/public/locales/pt/translation.json index 2fbce73..ea7a7c7 100644 --- a/public/locales/pt/translation.json +++ b/public/locales/pt/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Semana do mês", "recurrenceEndDate": "Data de término (opcional)", "completionBased": "Repetir após conclusão", - "repeatOn": "Repetir em" + "repeatOn": "Repetir em", + "deferUntil": "Adiar até" }, "projectSearchPlaceholder": "Pesquisar ou criar um projeto...", "noMatchingProjects": "Nenhum projeto correspondente", @@ -460,7 +461,8 @@ "noVerb": "Qual ação específica você precisa realizar? Tente começar com um verbo.", "vague": "Tente começar com um verbo de ação como \"Ligar\", \"Escrever\", \"Agendar\" ou \"Pesquisar\"" }, - "selectAtLeastOneDay": "Por favor, selecione pelo menos um dia" + "selectAtLeastOneDay": "Por favor, selecione pelo menos um dia", + "deferUntilPlaceholder": "Selecione a data e hora para adiar até" }, "noteTitle": "Título da Nota", "noteContent": "Conteúdo da Nota", @@ -765,7 +767,11 @@ "parentTask": "Tarefa Pai", "includingToday": "incluindo hoje", "has": "tem", - "fromProject": "do projeto" + "fromProject": "do projeto", + "deferUntil": "Adiar até", + "noDeferUntil": "Sem adiamento até", + "deferUntilUpdated": "Adiado até atualizado com sucesso", + "deferUntilUpdateError": "Falha ao atualizar o adiamento até" }, "projects": { "loading": "Carregando projetos...", diff --git a/public/locales/ro/translation.json b/public/locales/ro/translation.json index 2b55675..39d6a8b 100644 --- a/public/locales/ro/translation.json +++ b/public/locales/ro/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Săptămâna lunii", "recurrenceEndDate": "Data de sfârșit (opțional)", "completionBased": "Repetare după finalizare", - "repeatOn": "Repetă pe" + "repeatOn": "Repetă pe", + "deferUntil": "Amână până la" }, "projectSearchPlaceholder": "Caută sau creează un proiect...", "noMatchingProjects": "Niciun proiect corespunzător", @@ -460,7 +461,8 @@ "noVerb": "Ce acțiune specifică trebuie să întreprinzi? Încercați să începeți cu un verb.", "vague": "Încercați să începeți cu un verb de acțiune, cum ar fi \"Sună\", \"Scrie\", \"Programează\" sau \"Cercetează\"" }, - "selectAtLeastOneDay": "Te rugăm să selectezi cel puțin o zi" + "selectAtLeastOneDay": "Te rugăm să selectezi cel puțin o zi", + "deferUntilPlaceholder": "Selectați data și ora până la care să amânați" }, "noteTitle": "Titlul notei", "noteContent": "Conținutul notei", @@ -765,7 +767,11 @@ "parentTask": "Sarcina Părinte", "includingToday": "inclusiv astăzi", "has": "are", - "fromProject": "din proiect" + "fromProject": "din proiect", + "deferUntil": "Amână până la", + "noDeferUntil": "Nicio amânare până la", + "deferUntilUpdated": "Amânare până la actualizare cu succes", + "deferUntilUpdateError": "Actualizarea amânării până la a eșuat" }, "projects": { "loading": "Se încarcă proiectele...", diff --git a/public/locales/ru/translation.json b/public/locales/ru/translation.json index d1c412a..e9d9e88 100644 --- a/public/locales/ru/translation.json +++ b/public/locales/ru/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Неделя месяца", "recurrenceEndDate": "Дата окончания (необязательно)", "completionBased": "Повторять после завершения", - "repeatOn": "Повторять в" + "repeatOn": "Повторять в", + "deferUntil": "Отложить до" }, "projectSearchPlaceholder": "Поиск или создание проекта...", "noMatchingProjects": "Нет подходящих проектов", @@ -460,7 +461,8 @@ "noVerb": "Какое конкретное действие вам нужно предпринять? Попробуйте начать с глагола.", "vague": "Попробуйте начать с глагола действия, например, \"Позвонить\", \"Написать\", \"Запланировать\" или \"Исследовать\"" }, - "selectAtLeastOneDay": "Пожалуйста, выберите хотя бы один день" + "selectAtLeastOneDay": "Пожалуйста, выберите хотя бы один день", + "deferUntilPlaceholder": "Выберите дату и время отложения" }, "noteTitle": "Название заметки", "noteContent": "Содержание заметки", @@ -765,7 +767,11 @@ "parentTask": "Родительская задача", "includingToday": "включая сегодня", "has": "имеет", - "fromProject": "из проекта" + "fromProject": "из проекта", + "deferUntil": "Отложить до", + "noDeferUntil": "Нет отложения до", + "deferUntilUpdated": "Отложено до обновления успешно", + "deferUntilUpdateError": "Не удалось обновить отложение до" }, "projects": { "loading": "Загрузка проектов...", diff --git a/public/locales/sl/translation.json b/public/locales/sl/translation.json index 502448a..c40d245 100644 --- a/public/locales/sl/translation.json +++ b/public/locales/sl/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Teden v mesecu", "recurrenceEndDate": "Datum konca (neobvezno)", "completionBased": "Ponovi po zaključku", - "repeatOn": "Ponovi na" + "repeatOn": "Ponovi na", + "deferUntil": "Odmik do" }, "projectSearchPlaceholder": "Išči ali ustvari projekt...", "noMatchingProjects": "Brez ustreznih projektov", @@ -460,7 +461,8 @@ "noVerb": "Katero specifično dejanje morate izvesti? Poskusite začeti z glagolom.", "vague": "Poskusite začeti z glagolom akcije, kot so \"Pokliči\", \"Napiši\", \"Načrtuj\" ali \"Raziskuj\"" }, - "selectAtLeastOneDay": "Prosimo, izberite vsaj en dan" + "selectAtLeastOneDay": "Prosimo, izberite vsaj en dan", + "deferUntilPlaceholder": "Izberite datum in čas odloga" }, "noteTitle": "Naslov opombe", "noteContent": "Vsebina opombe", @@ -765,7 +767,11 @@ "parentTask": "Nadrejena naloga", "includingToday": "vključno s danes", "has": "ima", - "fromProject": "iz projekta" + "fromProject": "iz projekta", + "deferUntil": "Odmik do", + "noDeferUntil": "Brez odloga do", + "deferUntilUpdated": "Odmik do uspešno posodobljen", + "deferUntilUpdateError": "Posodobitev odloga do ni uspela" }, "projects": { "loading": "Nalagam projekte...", diff --git a/public/locales/sv/translation.json b/public/locales/sv/translation.json index 8bb9a8f..fe1647c 100644 --- a/public/locales/sv/translation.json +++ b/public/locales/sv/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Vecka i månaden", "recurrenceEndDate": "Slutdatum (valfritt)", "completionBased": "Upprepa efter slutförd", - "repeatOn": "Upprepa på" + "repeatOn": "Upprepa på", + "deferUntil": "Skjut upp till" }, "projectSearchPlaceholder": "Sök eller skapa ett projekt...", "noMatchingProjects": "Inga matchande projekt", @@ -460,7 +461,8 @@ "noVerb": "Vilken specifik åtgärd behöver du vidta? Försök att börja med ett verb.", "vague": "Försök att börja med ett handlingsverb som \"Ring\", \"Skriv\", \"Boka\" eller \"Forska\"" }, - "selectAtLeastOneDay": "Vänligen välj minst en dag" + "selectAtLeastOneDay": "Vänligen välj minst en dag", + "deferUntilPlaceholder": "Välj datum och tid för uppskjutning" }, "noteTitle": "Anteckningsitel", "noteContent": "Anteckningsinnehåll", @@ -765,7 +767,11 @@ "parentTask": "Överordnad uppgift", "includingToday": "inklusive idag", "has": "har", - "fromProject": "från projektet" + "fromProject": "från projektet", + "deferUntil": "Skjut upp till", + "noDeferUntil": "Ingen uppskjutning", + "deferUntilUpdated": "Uppskjutning uppdaterad framgångsrikt", + "deferUntilUpdateError": "Misslyckades med att uppdatera uppskjutning" }, "projects": { "loading": "Laddar projekt...", diff --git a/public/locales/tr/translation.json b/public/locales/tr/translation.json index 7be3eef..7485bd1 100644 --- a/public/locales/tr/translation.json +++ b/public/locales/tr/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Ayın Haftası", "recurrenceEndDate": "Bitiş tarihi (isteğe bağlı)", "completionBased": "Tamamlandıktan sonra tekrar et", - "repeatOn": "Şu tarihlerde tekrar et" + "repeatOn": "Şu tarihlerde tekrar et", + "deferUntil": "Erteleme Tarihi" }, "projectSearchPlaceholder": "Proje ara veya oluştur...", "noMatchingProjects": "Eşleşen proje yok", @@ -460,7 +461,8 @@ "noVerb": "Hangi spesifik eylemi gerçekleştirmeniz gerekiyor? Bir fiille başlamayı deneyin.", "vague": "\"Ara\", \"Yaz\", \"Planla\" veya \"Araştır\" gibi bir eylem fiili ile başlamayı deneyin" }, - "selectAtLeastOneDay": "Lütfen en az bir gün seçin" + "selectAtLeastOneDay": "Lütfen en az bir gün seçin", + "deferUntilPlaceholder": "Erteleme tarihi ve saatini seçin" }, "noteTitle": "Not Başlığı", "noteContent": "Not İçeriği", @@ -765,7 +767,11 @@ "parentTask": "Üst Görev", "includingToday": "bugün dahil", "has": "var", - "fromProject": "projeden" + "fromProject": "projeden", + "deferUntil": "Erteleme Tarihi", + "noDeferUntil": "Erteleme yok", + "deferUntilUpdated": "Başarıyla erteleme tarihi güncellendi", + "deferUntilUpdateError": "Erteleme tarihini güncelleme başarısız oldu" }, "projects": { "loading": "Projeler yükleniyor...", diff --git a/public/locales/ua/translation.json b/public/locales/ua/translation.json index c4a91f5..75ce798 100644 --- a/public/locales/ua/translation.json +++ b/public/locales/ua/translation.json @@ -257,7 +257,8 @@ "priority": "Пріоритет", "dueDate": "Термін виконання", "note": "Примітка", - "repeatOn": "Повторювати в" + "repeatOn": "Повторювати в", + "deferUntil": "Відкласти до" }, "recurrenceSettings": "Налаштування повторення", "completionBasedHelp": "Якщо відмічено, наступне завдання буде створене на основі дати завершення замість дати виконання", @@ -280,7 +281,8 @@ "noVerb": "Які конкретні дії ви повинні виконати? Спробуйте почати з дієслова.", "vague": "Спробуйте почати з дієслова, наприклад \"Зателефонувати\", \"Написати\", \"Запланувати\", або \"Дослідити\"" }, - "selectAtLeastOneDay": "Будь ласка, виберіть принаймні один день" + "selectAtLeastOneDay": "Будь ласка, виберіть принаймні один день", + "deferUntilPlaceholder": "Виберіть дату та час для відкладення" }, "title": "Назва", "description": "Опис", @@ -745,7 +747,11 @@ "parentTask": "Батьківське завдання", "includingToday": "включаючи сьогодні", "has": "має", - "fromProject": "з проєкту" + "fromProject": "з проєкту", + "deferUntil": "Відкласти до", + "noDeferUntil": "Не відкладати до", + "deferUntilUpdated": "Відкладено до успішного оновлення", + "deferUntilUpdateError": "Не вдалося оновити відкладення до" }, "calendar": { "month": "Місяць", diff --git a/public/locales/vi/translation.json b/public/locales/vi/translation.json index fa59509..a05377c 100644 --- a/public/locales/vi/translation.json +++ b/public/locales/vi/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "Tuần trong tháng", "recurrenceEndDate": "Ngày kết thúc (tùy chọn)", "completionBased": "Lặp lại sau khi hoàn thành", - "repeatOn": "Lặp lại vào" + "repeatOn": "Lặp lại vào", + "deferUntil": "Hoãn đến" }, "projectSearchPlaceholder": "Tìm kiếm hoặc tạo một dự án...", "noMatchingProjects": "Không có dự án nào phù hợp", @@ -460,7 +461,8 @@ "noVerb": "Bạn cần thực hiện hành động cụ thể nào? Hãy thử bắt đầu bằng một động từ.", "vague": "Hãy thử bắt đầu bằng một động từ hành động như \"Gọi\", \"Viết\", \"Lên lịch\", hoặc \"Nghiên cứu\"" }, - "selectAtLeastOneDay": "Vui lòng chọn ít nhất một ngày" + "selectAtLeastOneDay": "Vui lòng chọn ít nhất một ngày", + "deferUntilPlaceholder": "Chọn ngày và giờ hoãn đến" }, "noteTitle": "Tiêu đề ghi chú", "noteContent": "Nội dung ghi chú", @@ -765,7 +767,11 @@ "parentTask": "Nhiệm vụ Cha", "includingToday": "bao gồm hôm nay", "has": "có", - "fromProject": "từ dự án" + "fromProject": "từ dự án", + "deferUntil": "Hoãn đến", + "noDeferUntil": "Không có hoãn đến", + "deferUntilUpdated": "Hoãn đến đã được cập nhật thành công", + "deferUntilUpdateError": "Cập nhật hoãn đến không thành công" }, "projects": { "loading": "Đang tải dự án...", diff --git a/public/locales/zh/translation.json b/public/locales/zh/translation.json index 07201e5..91e06fe 100644 --- a/public/locales/zh/translation.json +++ b/public/locales/zh/translation.json @@ -438,7 +438,8 @@ "weekOfMonth": "每月的周", "recurrenceEndDate": "结束日期(可选)", "completionBased": "完成后重复", - "repeatOn": "重复于" + "repeatOn": "重复于", + "deferUntil": "延迟至" }, "projectSearchPlaceholder": "搜索或创建项目...", "noMatchingProjects": "没有匹配的项目", @@ -460,7 +461,8 @@ "noVerb": "你需要采取什么具体行动?尝试以动词开头。", "vague": "尝试以动作动词开头,例如 \"打电话\"、\"写\"、\"安排\" 或 \"研究\"" }, - "selectAtLeastOneDay": "请至少选择一天" + "selectAtLeastOneDay": "请至少选择一天", + "deferUntilPlaceholder": "选择延迟至的日期和时间" }, "noteTitle": "笔记标题", "noteContent": "笔记内容", @@ -765,7 +767,11 @@ "parentTask": "父任务", "includingToday": "包括今天", "has": "有", - "fromProject": "来自项目" + "fromProject": "来自项目", + "deferUntil": "延迟至", + "noDeferUntil": "无延迟至", + "deferUntilUpdated": "成功更新延迟至", + "deferUntilUpdateError": "更新延迟至失败" }, "projects": { "loading": "加载项目中...",