From f00751a6e014e719ede7683132f597a7871e0ad1 Mon Sep 17 00:00:00 2001 From: lcdgit <2279707742@qq.com> Date: Sun, 17 Nov 2024 09:33:39 +0800 Subject: [PATCH] feat: allow to remove done items (#4126) * add remove done items * i18n en add * bug fix * add i18n * Modify the description * Modify the description * Modify the description * remove remove_done_check_items setting * fix the static checks * fix the static checks --------- Co-authored-by: mozhu --- web/src/components/MemoActionMenu.tsx | 47 ++++++++++++++++++++++++++- web/src/components/MemoView.tsx | 38 ++++++++++++++++++---- web/src/locales/ar.json | 4 ++- web/src/locales/de.json | 10 ++++-- web/src/locales/en.json | 10 ++++-- web/src/locales/es.json | 10 ++++-- web/src/locales/fr.json | 10 ++++-- web/src/locales/hi.json | 7 ++-- web/src/locales/hr.json | 10 ++++-- web/src/locales/hu.json | 10 ++++-- web/src/locales/it.json | 10 ++++-- web/src/locales/ja.json | 10 ++++-- web/src/locales/ko.json | 10 ++++-- web/src/locales/mr.json | 10 ++++-- web/src/locales/nl.json | 10 ++++-- web/src/locales/pl.json | 10 ++++-- web/src/locales/pt-BR.json | 10 ++++-- web/src/locales/ru.json | 10 ++++-- web/src/locales/sl.json | 16 +++++---- web/src/locales/sv.json | 10 ++++-- web/src/locales/th.json | 10 ++++-- web/src/locales/tr.json | 10 ++++-- web/src/locales/uk.json | 10 ++++-- web/src/locales/vi.json | 10 ++++-- web/src/locales/zh-Hans.json | 10 ++++-- web/src/locales/zh-Hant.json | 10 ++++-- 26 files changed, 243 insertions(+), 79 deletions(-) diff --git a/web/src/components/MemoActionMenu.tsx b/web/src/components/MemoActionMenu.tsx index 86aaec46f8044..cf9ae8745295b 100644 --- a/web/src/components/MemoActionMenu.tsx +++ b/web/src/components/MemoActionMenu.tsx @@ -10,19 +10,22 @@ import { Edit3Icon, MoreVerticalIcon, TrashIcon, + SquareCheckIcon, } from "lucide-react"; import toast from "react-hot-toast"; import { useLocation } from "react-router-dom"; +import { markdownServiceClient } from "@/grpcweb"; import useNavigateTo from "@/hooks/useNavigateTo"; import { useMemoStore } from "@/store/v1"; import { RowStatus } from "@/types/proto/api/v1/common"; +import { NodeType } from "@/types/proto/api/v1/markdown_service"; import { Memo } from "@/types/proto/api/v1/memo_service"; import { useTranslate } from "@/utils/i18n"; interface Props { memo: Memo; className?: string; - hiddenActions?: ("edit" | "archive" | "delete" | "share" | "pin")[]; + hiddenActions?: ("edit" | "archive" | "delete" | "share" | "pin" | "remove_completed_task_list")[]; onEdit?: () => void; } @@ -113,6 +116,42 @@ const MemoActionMenu = (props: Props) => { } }; + const handleRemoveCompletedTaskListItemsClick = async () => { + const confirmed = window.confirm(t("memo.remove-completed-task-list-items-confirm")); + if (confirmed) { + const newNodes = JSON.parse(JSON.stringify(memo.nodes)); + for (let i = 0; i < newNodes.length; i++) { + if (newNodes[i].type === NodeType.LIST && newNodes[i].listNode?.children?.length > 0) { + let childrenLength = newNodes[i].listNode.children.length; + for (let j = 0; j < childrenLength; j++) { + if ( + newNodes[i].listNode.children[j].type === NodeType.TASK_LIST_ITEM && + newNodes[i].listNode.children[j].taskListItemNode?.complete + ) { + // Remove completed taskList item and next line breaks + newNodes[i].listNode.children.splice(j, 1); + if (newNodes[i].listNode.children[j]?.type === NodeType.LINE_BREAK) { + newNodes[i].listNode.children.splice(j, 1); + childrenLength--; + } + childrenLength--; + j--; + } + } + } + } + const { markdown } = await markdownServiceClient.restoreMarkdownNodes({ nodes: newNodes }); + await memoStore.updateMemo( + { + name: memo.name, + content: markdown, + }, + ["content"], + ); + toast.success(t("message.remove-completed-task-list-items-successfully")); + } + }; + return ( @@ -143,6 +182,12 @@ const MemoActionMenu = (props: Props) => { {memo.rowStatus === RowStatus.ARCHIVED ? : } {memo.rowStatus === RowStatus.ARCHIVED ? t("common.restore") : t("common.archive")} + {!hiddenActions?.includes("remove_completed_task_list") && ( + + + {t("memo.remove-completed-task-list-items")} + + )} {t("common.delete")} diff --git a/web/src/components/MemoView.tsx b/web/src/components/MemoView.tsx index f03ef0fc367c3..840e097b49c54 100644 --- a/web/src/components/MemoView.tsx +++ b/web/src/components/MemoView.tsx @@ -7,6 +7,7 @@ import useAsyncEffect from "@/hooks/useAsyncEffect"; import useCurrentUser from "@/hooks/useCurrentUser"; import useNavigateTo from "@/hooks/useNavigateTo"; import { useUserStore, useWorkspaceSettingStore, useMemoStore } from "@/store/v1"; +import { NodeType } from "@/types/proto/api/v1/markdown_service"; import { MemoRelation_Type } from "@/types/proto/api/v1/memo_relation_service"; import { Memo, Visibility } from "@/types/proto/api/v1/memo_service"; import { WorkspaceMemoRelatedSetting } from "@/types/proto/api/v1/workspace_setting_service"; @@ -115,6 +116,36 @@ const MemoView: React.FC = (props: Props) => { ); + const handleHiddenActions = () => { + const hiddenActions: ("edit" | "archive" | "delete" | "share" | "pin" | "remove_completed_task_list")[] = []; + if (!props.showPinned) { + hiddenActions.push("pin"); + } + // check if the content has done tasks + let hasCompletedTaskList = false; + const newNodes = JSON.parse(JSON.stringify(memo.nodes)); + for (let i = 0; i < newNodes.length; i++) { + if (hasCompletedTaskList) { + break; + } + if (newNodes[i].type === NodeType.LIST && newNodes[i].listNode?.children?.length > 0) { + for (let j = 0; j < newNodes[i].listNode.children.length; j++) { + if ( + newNodes[i].listNode.children[j].type === NodeType.TASK_LIST_ITEM && + newNodes[i].listNode.children[j].taskListItemNode?.complete + ) { + hasCompletedTaskList = true; + break; + } + } + } + } + if (!hasCompletedTaskList) { + hiddenActions.push("remove_completed_task_list"); + } + return hiddenActions; + }; + return (
= (props: Props) => { )} {!readonly && ( - setShowEditor(true)} - /> + setShowEditor(true)} /> )}
diff --git a/web/src/locales/ar.json b/web/src/locales/ar.json index 108ac4ed03211..1ed6cbeb85084 100644 --- a/web/src/locales/ar.json +++ b/web/src/locales/ar.json @@ -88,7 +88,9 @@ "private": "خاص", "protected": "مساحة عمل", "public": "عام" - } + }, + "remove-completed-task-list-items": "إزالة المنجز", + "remove-completed-task-list-items-confirm": "هل أنت متأكد أنك تريد إزالة جميع المهام المنجزة؟ (هذه العملية لا يمكن التراجع عنها)" }, "resource": { "clear": "مسح", diff --git a/web/src/locales/de.json b/web/src/locales/de.json index 0d2300941633f..6eba76ea485a5 100644 --- a/web/src/locales/de.json +++ b/web/src/locales/de.json @@ -97,7 +97,9 @@ "private": "Nur für dich sichtbar", "protected": "Mitglieder", "public": "Öffentlich" - } + }, + "remove-completed-task-list-items": "Erledigt entfernen", + "remove-completed-task-list-items-confirm": "Sind Sie sicher, dass Sie alle abgeschlossenen Aufgaben entfernen möchten? (Diese Aktion kann nicht rückgängig gemacht werden)" }, "message": { "change-memo-created-time": "Erstellungszeitpunkt ändern", @@ -112,7 +114,8 @@ "restored-successfully": "Erfolgreich wiederhergestellt", "succeed-copy-link": "Link erfolgreich kopiert", "update-succeed": "Update erfolgreich", - "user-not-found": "Nutzer nicht gefunden" + "user-not-found": "Nutzer nicht gefunden", + "remove-completed-task-list-items-successfully": "Erfolgreich entfernt!" }, "resource": { "clear": "Löschen", @@ -263,7 +266,8 @@ "enable-password-login-warning": "Dadurch wird die Passwortanmeldung für alle Benutzer aktiviert. Fahre nur fort, wenn du möchtest, dass sich Benutzer sowohl mit SSO als auch mit einem Passwort anmelden können", "max-upload-size": "Maximale Uploadgröße (MiB)", "max-upload-size-hint": "Empfohlene Wert ist 32 MiB.", - "server-name": "Servername" + "server-name": "Servername", + "removed-completed-task-list-items": "Entfernen abgeschlossen aktivieren" } }, "tag": { diff --git a/web/src/locales/en.json b/web/src/locales/en.json index 4301742bd7ea8..7876024b657cd 100644 --- a/web/src/locales/en.json +++ b/web/src/locales/en.json @@ -118,7 +118,9 @@ }, "links": "Links", "to-do": "To-do", - "code": "Code" + "code": "Code", + "remove-completed-task-list-items": "Remove done", + "remove-completed-task-list-items-confirm": "Are you sure you want to remove all completed to-dos? THIS ACTION IS IRREVERSIBLE" }, "message": { "archived-successfully": "Archived successfully", @@ -135,7 +137,8 @@ "restored-successfully": "Restored successfully", "succeed-copy-link": "Link copied successfully.", "update-succeed": "Update succeeded", - "user-not-found": "User not found" + "user-not-found": "User not found", + "remove-completed-task-list-items-successfully": "The removal was successful" }, "reference": { "add-references": "Add references", @@ -299,7 +302,8 @@ "enable-password-login-warning": "This will enable password login for all users. Continue only if you want to users to be able to log in using both SSO and password", "max-upload-size": "Maximum upload size (MiB)", "max-upload-size-hint": "Recommended value is 32 MiB.", - "server-name": "Server Name" + "server-name": "Server Name", + "removed-completed-task-list-items": "Enable removal of completed task list items" }, "memo-related": "Memo", "access-token-section":{ diff --git a/web/src/locales/es.json b/web/src/locales/es.json index 218d19ae86ca5..62856ecc26129 100644 --- a/web/src/locales/es.json +++ b/web/src/locales/es.json @@ -105,7 +105,9 @@ "private": "Solo visible para ti", "protected": "Espacio de trabajo", "public": "Todo el mundo lo puede ver" - } + }, + "remove-completed-task-list-items": "Eliminar completado", + "remove-completed-task-list-items-confirm": "¿Estás seguro de que quieres eliminar todas las tareas completadas? (Esta acción es irreversible)" }, "message": { "change-memo-created-time": "Cambiar la hora de creación del memo", @@ -120,7 +122,8 @@ "restored-successfully": "Restaurado con éxito", "succeed-copy-link": "Enlace copiado correctamente.", "update-succeed": "Actualización exitosa", - "user-not-found": "Usuario no encontrado" + "user-not-found": "Usuario no encontrado", + "remove-completed-task-list-items-successfully": "¡Eliminado con éxito!" }, "resource": { "clear": "Limpiar", @@ -265,7 +268,8 @@ "enable-password-login-warning": "Esto habilitará el inicio de sesión con contraseña para todos los usuarios. Continúa sólo si deseas que los usuarios puedan iniciar sesión mediante SSO y contraseña", "max-upload-size": "Tamaño máximo de subida (MiB)", "max-upload-size-hint": "El valor recomendado es de 32 MiB.", - "server-name": "Nombre del servidor" + "server-name": "Nombre del servidor", + "removed-completed-task-list-items": "Habilitar eliminar completado" } }, "tag": { diff --git a/web/src/locales/fr.json b/web/src/locales/fr.json index 94b3bba38fdf9..85212d3ba2858 100644 --- a/web/src/locales/fr.json +++ b/web/src/locales/fr.json @@ -118,7 +118,9 @@ "private": "Privé", "protected": "Accès aux membres", "public": "Public" - } + }, + "remove-completed-task-list-items": "Supprimer terminé", + "remove-completed-task-list-items-confirm": "Êtes-vous sûr de vouloir supprimer toutes les tâches terminées ? (Cette action est irréversible)" }, "message": { "archived-successfully": "Archivé avec succès", @@ -135,7 +137,8 @@ "restored-successfully": "Restauré avec succès", "succeed-copy-link": "Succeed to copy link to clipboard.", "update-succeed": "Mise à jour effectuée", - "user-not-found": "Utilisateur introuvable" + "user-not-found": "Utilisateur introuvable", + "remove-completed-task-list-items-successfully": "Supprimé avec succès !" }, "reference": { "add-references": "Ajouter des références", @@ -297,7 +300,8 @@ "enable-password-login-warning": "Ceci activera la connexion par mot de passe pour tous les utilisateurs. Ne continuez que si vous souhaitez que les utilisateurs puissent se connecter à la fois par SSO et par mot de passe", "max-upload-size": "Taille maximale du téléversement (MiB)", "max-upload-size-hint": "La valeur recommandée est 32 MiB.", - "server-name": "Nom du serveur" + "server-name": "Nom du serveur", + "removed-completed-task-list-items": "Activer la suppression terminée" } }, "tag": { diff --git a/web/src/locales/hi.json b/web/src/locales/hi.json index 8072fe77bb11c..9bb006fbe06d1 100644 --- a/web/src/locales/hi.json +++ b/web/src/locales/hi.json @@ -90,7 +90,9 @@ "private": "निजी", "protected": "सदस्यों को दिखाई देता है", "public": "सभी के लिए सार्वजनिक" - } + }, + "remove-completed-task-list-items": "हटाएँ किया गया", + "remove-completed-task-list-items-confirm": "क्या आप सुनिश्चित हैं कि आप सभी पूरे कामों को हटाना चाहते हैं? (यह क्रिया वापस ले जाने योग्य नहीं है)" }, "message": { "change-memo-created-time": "मेमो बनाने का समय बदलें", @@ -105,7 +107,8 @@ "restored-successfully": "सफलतापूर्वक पुनर्स्थापित किया गया", "succeed-copy-link": "लिंक सफलतापूर्वक कॉपी किया गया।", "update-succeed": "अपडेट सफल हुआ", - "user-not-found": "उपयोगकर्ता नहीं मिला" + "user-not-found": "उपयोगकर्ता नहीं मिला", + "remove-completed-task-list-items-successfully": "सफलतापूर्वक हटा दिया!" }, "resource": { "clear": "साफ़ करें", diff --git a/web/src/locales/hr.json b/web/src/locales/hr.json index c207adb63a2b4..4454866c14da1 100644 --- a/web/src/locales/hr.json +++ b/web/src/locales/hr.json @@ -102,7 +102,9 @@ "private": "Privatno", "protected": "Vidljivo članovima", "public": "Javno" - } + }, + "remove-completed-task-list-items": "Ukloni obavljen", + "remove-completed-task-list-items-confirm": "Jeste li sigurni da želite ukloniti sve obavljene zadatke? (Ova akcija je nevraćiva)" }, "message": { "change-memo-created-time": "Promijeni vrijeme stvaranja memoa", @@ -117,7 +119,8 @@ "restored-successfully": "Uspješno vraćeno", "succeed-copy-link": "Link je uspješno kopiran.", "update-succeed": "Obnavljanje aplikacije je uspjelo!🎉", - "user-not-found": "Korisnik nije nađen" + "user-not-found": "Korisnik nije nađen", + "remove-completed-task-list-items-successfully": "Uspješno uklonjeno!" }, "resource": { "clear": "Očisti", @@ -267,7 +270,8 @@ "enable-password-login-warning": "Ovo će omogućiti prijavu lozinkom za sve korisnike.", "max-upload-size": "Maximalna veličina uploada (MiB)", "max-upload-size-hint": "Preporučena vrijednost je 32 MiB.", - "server-name": "Ime servera" + "server-name": "Ime servera", + "removed-completed-task-list-items": "Omogući uklanjanje obavljenog" } }, "tag": { diff --git a/web/src/locales/hu.json b/web/src/locales/hu.json index 983ddc60570f3..039d6bb03f6b3 100644 --- a/web/src/locales/hu.json +++ b/web/src/locales/hu.json @@ -113,7 +113,9 @@ "private": "Privát", "protected": "Munkatér", "public": "Nyilvános" - } + }, + "remove-completed-task-list-items": "Töröld el a kész", + "remove-completed-task-list-items-confirm": "Biztos, hogy törölni akarod az összes kész feladatot? (Ez az akció visszavonhatatlan)" }, "message": { "archived-successfully": "Sikeres archiválás", @@ -130,7 +132,8 @@ "restored-successfully": "Sikeres visszaállítás", "succeed-copy-link": "Hivatkozás sikeresen másolva.", "update-succeed": "Sikeres frissítés", - "user-not-found": "Felhasználó nem található" + "user-not-found": "Felhasználó nem található", + "remove-completed-task-list-items-successfully": "Sikeresen eltávolítva!" }, "reference": { "add-references": "Referenciák hozzáadása", @@ -287,7 +290,8 @@ "enable-password-login-warning": "Ez engedélyezi a jelszavas bejelentkezést minden felhasználó számára. Csak akkor folytasd, ha szeretnéd, ha a felhasználók SSO és jelszó használatával is be tudjanak jelentkezni", "max-upload-size": "Maximális feltöltési méret (MiB)", "max-upload-size-hint": "Az ajánlott érték 32 MiB.", - "server-name": "Szerver neve" + "server-name": "Szerver neve", + "removed-completed-task-list-items": "Kikapcsold a kész törölését" } }, "tag": { diff --git a/web/src/locales/it.json b/web/src/locales/it.json index 261968510eb6f..28e5677caced1 100644 --- a/web/src/locales/it.json +++ b/web/src/locales/it.json @@ -91,7 +91,9 @@ "private": "Privato", "protected": "Visibile ai membri", "public": "Pubblico" - } + }, + "remove-completed-task-list-items": "Rimuovi completato", + "remove-completed-task-list-items-confirm": "Sei sicuro di voler rimuovere tutte le cose completate? (Questa azione è irreversibile)" }, "message": { "change-memo-created-time": "Cambia data creazione", @@ -106,7 +108,8 @@ "restored-successfully": "Ripristinato con successo", "succeed-copy-link": "Link copiato.", "update-succeed": "Aggiornato con successo", - "user-not-found": "Utente non trovato" + "user-not-found": "Utente non trovato", + "remove-completed-task-list-items-successfully": "Rimosso con successo!" }, "resource": { "clear": "Cancella", @@ -253,7 +256,8 @@ "enable-password-login-warning": "Ciò consentirà l'accesso tramite password per tutti gli utenti. Continua solo se desideri che gli utenti possano accedere utilizzando sia SSO che password❗", "max-upload-size": "Dimensione massima caricamento (MiB)", "max-upload-size-hint": "Valore consigliato di 32 MiB.", - "server-name": "Nome server" + "server-name": "Nome server", + "removed-completed-task-list-items": "Abilita rimuovi completato" } }, "tag": { diff --git a/web/src/locales/ja.json b/web/src/locales/ja.json index f53f8c469353d..703c2eafa8071 100644 --- a/web/src/locales/ja.json +++ b/web/src/locales/ja.json @@ -118,7 +118,9 @@ "private": "非公開", "protected": "メンバーに表示", "public": "公開メモ" - } + }, + "remove-completed-task-list-items": "完了を削除", + "remove-completed-task-list-items-confirm": "すべての完了したタスクを削除してもよろしいですか?(このアクションは取り消せません)" }, "message": { "archived-successfully": "アーカイブが完了しました", @@ -135,7 +137,8 @@ "restored-successfully": "リストア成功", "succeed-copy-link": "リンクのコピーに成功しました。", "update-succeed": "変更は保存されました", - "user-not-found": "ユーザーが見つかりませんでした" + "user-not-found": "ユーザーが見つかりませんでした", + "remove-completed-task-list-items-successfully": "削除が成功しました!" }, "reference": { "add-references": "変更は保存されました", @@ -297,7 +300,8 @@ "enable-password-login-warning": "これにより、すべてのユーザーのパスワードでのログインが有効になります。SSOとパスワードの両方を使用してログインできるようにしたい場合のみ、続行してください", "max-upload-size": "最大ファイルサイズ(MiB)", "max-upload-size-hint": "推奨サイズは32 MiBです。", - "server-name": "サーバーの名前" + "server-name": "サーバーの名前", + "removed-completed-task-list-items": "完了削除を有効にする" } }, "tag": { diff --git a/web/src/locales/ko.json b/web/src/locales/ko.json index 7631ad0047355..89e8fc0b7e34a 100644 --- a/web/src/locales/ko.json +++ b/web/src/locales/ko.json @@ -102,7 +102,9 @@ "private": "나만 볼 수 있음", "protected": "멤버 전용", "public": "공개" - } + }, + "remove-completed-task-list-items": "완료 제거", + "remove-completed-task-list-items-confirm": "모든 완료된 작업을 삭제하겠습니까? (이 작업은 되돌릴 수 없습니다)" }, "message": { "change-memo-created-time": "메모 생성 시각 변경", @@ -117,7 +119,8 @@ "restored-successfully": "성공적으로 복구했습니다", "succeed-copy-link": "링크를 클립보드에 복사했습니다.", "update-succeed": "업데이트 성공", - "user-not-found": "회원을 찾을 수 없습니다" + "user-not-found": "회원을 찾을 수 없습니다", + "remove-completed-task-list-items-successfully": "성공적으로 제거되었습니다!" }, "resource": { "clear": "클리어", @@ -268,7 +271,8 @@ "enable-password-login-warning": "모든 사용자가 비밀번호를 사용해서 로그인할 수 있게 합니다. 사용자들이 SSO와 비밀번호 둘 다 사용할 수 있게 하고 싶은 경우에만 켜 주세요", "max-upload-size": "최대 업로드 크기 (MiB)", "max-upload-size-hint": "권장값은 32 MiB입니다.", - "server-name": "서버 이름" + "server-name": "서버 이름", + "removed-completed-task-list-items": "완료 제거 활성화" } }, "tag": { diff --git a/web/src/locales/mr.json b/web/src/locales/mr.json index 061c625899fc6..aba93762573a0 100644 --- a/web/src/locales/mr.json +++ b/web/src/locales/mr.json @@ -115,7 +115,9 @@ "private": "खाजगी", "protected": "कार्यक्षेत्र", "public": "सार्वजनिक" - } + }, + "remove-completed-task-list-items": "हटवा केलेले", + "remove-completed-task-list-items-confirm": "तुम्ही सगळ्या पूर्ण केलेल्या कामांचे हटवणार आहात का? (या क्रियेचे उलट घेणे शक्य नाही)" }, "message": { "archived-successfully": "यशस्वीरित्या संग्रहित केले", @@ -132,7 +134,8 @@ "restored-successfully": "यशस्वीरित्या पुनर्संचयित केले", "succeed-copy-link": "लिंक यशस्वीरित्या कॉपी केली.", "update-succeed": "अपडेट यशस्वी झाले", - "user-not-found": "वापरकर्ता सापडला नाही" + "user-not-found": "वापरकर्ता सापडला नाही", + "remove-completed-task-list-items-successfully": "सफळताने हटवा झाले!" }, "reference": { "add-references": "संदर्भ जोडा", @@ -291,7 +294,8 @@ "enable-password-login-warning": "हे सर्व वापरकर्त्यांसाठी पासवर्ड लॉगिन सक्षम करेल. जर तुम्ही वापरकर्त्यांना SSO आणि पासवर्ड दोन्ही वापरून लॉग इन करू इच्छित असाल तरच सुरू ठेवा", "max-upload-size": "कमाल अपलोड आकार (MiB)", "max-upload-size-hint": "शिफारस केलेले मूल्य 32 MiB आहे.", - "server-name": "सर्व्हरचे नाव" + "server-name": "सर्व्हरचे नाव", + "removed-completed-task-list-items": "हटवा केलेले सक्षम करा" } }, "tag": { diff --git a/web/src/locales/nl.json b/web/src/locales/nl.json index 1404f604a69d8..3513e5ff1f9e5 100644 --- a/web/src/locales/nl.json +++ b/web/src/locales/nl.json @@ -97,7 +97,9 @@ "private": "Privé", "protected": "Werkruimte", "public": "Openbaar" - } + }, + "remove-completed-task-list-items": "Verwijder voltooid", + "remove-completed-task-list-items-confirm": "Weet u zeker dat u alle voltooide taken wilt verwijderen? (Deze actie is onomkeerbaar)" }, "message": { "change-memo-created-time": "Tijd van aanmaken wijzigen", @@ -111,7 +113,8 @@ "restored-successfully": "Succesvol teruggezet", "succeed-copy-link": "Link gekopieërd naar klembord.", "update-succeed": "Update voltooid", - "user-not-found": "Gebruiker niet gevonden" + "user-not-found": "Gebruiker niet gevonden", + "remove-completed-task-list-items-successfully": "Gelukt verwijderd!" }, "resource": { "clear": "Opruimen", @@ -235,7 +238,8 @@ "enable-password-login-warning": "Als je dit aanzet kan er met zowel SSO als een wachtwoord ingelogd worden", "max-upload-size": "Maximum uploadgrootte (MiB)", "max-upload-size-hint": "32 MiB wordt aangeraden.", - "server-name": "Servernaam" + "server-name": "Servernaam", + "removed-completed-task-list-items": "Verwijder voltooid inschakelen" } }, "tag": { diff --git a/web/src/locales/pl.json b/web/src/locales/pl.json index 312615ccfa5dc..25a3572725d40 100644 --- a/web/src/locales/pl.json +++ b/web/src/locales/pl.json @@ -117,7 +117,9 @@ }, "links": "Linki", "to-do": "Lista zadań", - "code": "Kod" + "code": "Kod", + "remove-completed-task-list-items": "Usuń zakończone", + "remove-completed-task-list-items-confirm": "Czy jesteś pewny, że chcesz usunąć wszystkie zakończone zadania? (Ta akcja jest nieodwracalna)" }, "message": { "archived-successfully": "Zarchiwizowano pomyślnie", @@ -134,7 +136,8 @@ "restored-successfully": "Przywrócono pomyślnie", "succeed-copy-link": "Link skopiowany pomyślnie.", "update-succeed": "Aktualizacja zakończona sukcesem", - "user-not-found": "Użytkownik nie został znaleziony" + "user-not-found": "Użytkownik nie został znaleziony", + "remove-completed-task-list-items-successfully": "Pomyślnie usunięto!" }, "reference": { "add-references": "Dodaj odniesienia", @@ -295,7 +298,8 @@ "enable-password-login-warning": "To włączy logowanie hasłem dla wszystkich użytkowników. Kontynuuj tylko wtedy, gdy chcesz, aby użytkownicy mogli logować się za pomocą zarówno SSO, jak i hasła", "max-upload-size": "Maksymalny rozmiar przesyłanego pliku (MiB)", "max-upload-size-hint": "Zalecana wartość to 32 MiB.", - "server-name": "Nazwa serwera" + "server-name": "Nazwa serwera", + "removed-completed-task-list-items": "Włącz usuwanie zakończonych" }, "memo-related": "Notatki" }, diff --git a/web/src/locales/pt-BR.json b/web/src/locales/pt-BR.json index 9dcf4a3859810..6d0b642ceee17 100644 --- a/web/src/locales/pt-BR.json +++ b/web/src/locales/pt-BR.json @@ -118,7 +118,9 @@ "private": "Privado (eu)", "protected": "Protegido (membros)", "public": "Público (todos)" - } + }, + "remove-completed-task-list-items": "Remover concluídos", + "remove-completed-task-list-items-confirm": "Você tem certeza de que deseja remover todos os itens concluídos? (Essa ação é irreversível)" }, "message": { "archived-successfully": "Arquivado com êxito", @@ -135,7 +137,8 @@ "restored-successfully": "Restaurado com êxito", "succeed-copy-link": "Link copiado com êxito.", "update-succeed": "Atualizado com êxito", - "user-not-found": "Usuário não encontrado" + "user-not-found": "Usuário não encontrado", + "remove-completed-task-list-items-successfully": "Remoção bem-sucedida!" }, "reference": { "add-references": "Adicionar referências", @@ -297,7 +300,8 @@ "enable-password-login-warning": "Isso permitirá o login com senha para todos os usuários. Continue apenas se desejar que os usuários possam fazer login usando SSO e senha local❗", "max-upload-size": "Tamanho máximo de upload (MiB)", "max-upload-size-hint": "O valor recomendado é 32 MiB.", - "server-name": "Nome do servidor" + "server-name": "Nome do servidor", + "removed-completed-task-list-items": "Ativar remoção de concluídos" } }, "tag": { diff --git a/web/src/locales/ru.json b/web/src/locales/ru.json index 9648d898ecead..bcc9c92b7a936 100644 --- a/web/src/locales/ru.json +++ b/web/src/locales/ru.json @@ -112,7 +112,9 @@ "private": "Видно только вам", "protected": "Видно только пользователям", "public": "Видно всем" - } + }, + "remove-completed-task-list-items": "Удалить выполненные", + "remove-completed-task-list-items-confirm": "Вы уверены, что хотите удалить все выполненные задачи? (Данное действие необратимо)" }, "message": { "archived-successfully": "Успешная архивация", @@ -129,7 +131,8 @@ "restored-successfully": "Успешно восстановлено.", "succeed-copy-link": "Ссылка скопирована в буфер обмена.", "update-succeed": "Успешно обновлено", - "user-not-found": "Пользователь не найден" + "user-not-found": "Пользователь не найден", + "remove-completed-task-list-items-successfully": "Удалено успешно!" }, "reference": { "add-references": "Добавить ссылку", @@ -280,7 +283,8 @@ "display-with-updated-time": "Отображать время обновления записи", "max-upload-size": "Максимальный размер загрузки (МБ)", "max-upload-size-hint": "Рекомендуемое значение 32 MБ.", - "server-name": "Имя сервера" + "server-name": "Имя сервера", + "removed-completed-task-list-items": "Включить удаление выполненных" } }, "tag": { diff --git a/web/src/locales/sl.json b/web/src/locales/sl.json index 72de521828fd8..6721579932ad9 100644 --- a/web/src/locales/sl.json +++ b/web/src/locales/sl.json @@ -20,8 +20,8 @@ "change": "Spremeni", "clear": "Počisti", "close": "Zapri", - "confirm": "Potrdi", - "collapse": "Strni", + "confirm": "Potrdi", + "collapse": "Strni", "create": "Dodaj", "database": "Baza", "days": "Dni", @@ -118,7 +118,9 @@ }, "links": "Povezave", "to-do": "Opravila", - "code": "Koda" + "code": "Koda", + "remove-completed-task-list-items": "Odstrani končane", + "remove-completed-task-list-items-confirm": "Ste prepričani, da želite odstraniti vse končane naloge? (Ta dejanje ni obrnljivo)" }, "message": { "archived-successfully": "Archived successfully", @@ -135,7 +137,8 @@ "restored-successfully": "Uspešno obnovljeno", "succeed-copy-link": "Povezava je uspešno skopirana.", "update-succeed": "Posodobitev je uspešna", - "user-not-found": "Ne najdem uporabnika" + "user-not-found": "Ne najdem uporabnika", + "remove-completed-task-list-items-successfully": "Odstranitev uspešna!" }, "reference": { "add-references": "Dodaj referenco", @@ -295,8 +298,9 @@ "enable-password-login": "Omogoči prijavo z geslom", "enable-password-login-warning": "To bo omogočilo prijavo z geslom za vse uporabnike. Nadaljujte samo, če želite, da se uporabniki lahko prijavijo z uporabo enotne prijave in gesla", "max-upload-size": "Največja velikost nalaganja (MiB)", - "max-upload-size-hint": "Priporočena velikost je 32 MiB.", - "server-name": "Ime strežnika" + "max-upload-size-hint": "Priporočena velikost je 32 MiB.", + "server-name": "Ime strežnika", + "removed-completed-task-list-items": "Omogoči odstranitev končanih" }, "memo-related": "Beležka" }, diff --git a/web/src/locales/sv.json b/web/src/locales/sv.json index 3132bcf3c8d12..1e5bc30ab08c1 100644 --- a/web/src/locales/sv.json +++ b/web/src/locales/sv.json @@ -64,7 +64,9 @@ "private": "Endast synlig för dig", "protected": "Synlig för medlemmar", "public": "Synlig för alla" - } + }, + "remove-completed-task-list-items": "Ta bort avklarade", + "remove-completed-task-list-items-confirm": "Är du säker på att du vill ta bort alla avklarade todo? (Detta är oåterkalleligt)" }, "message": { "change-memo-created-time": "Ändra anteckning skapade tid", @@ -77,7 +79,8 @@ "restored-successfully": "Återställdes framgångsrikt", "succeed-copy-link": "Länk kopierades framgångsrikt.", "update-succeed": "Uppdateras framgångsrikt", - "user-not-found": "Användaren hittades inte" + "user-not-found": "Användaren hittades inte", + "remove-completed-task-list-items-successfully": "Borttagning avklarade todo lyckades!" }, "resource": { "clear": "Rensa", @@ -133,7 +136,8 @@ }, "disable-public-memos": "Inaktivera offentliga anteckningar", "display-with-updated-time": "Display with updated time", - "server-name": "Server Name" + "server-name": "Server Name", + "removed-completed-task-list-items": "Aktivera ta bort avklarade" } } } diff --git a/web/src/locales/th.json b/web/src/locales/th.json index 36cfb4d282a89..c5a71ebad9317 100644 --- a/web/src/locales/th.json +++ b/web/src/locales/th.json @@ -118,7 +118,9 @@ "private": "ส่วนตัว", "protected": "พื้นที่ทำงาน", "public": "สาธารณะ" - } + }, + "remove-completed-task-list-items": "ลบที่ทำแล้ว", + "remove-completed-task-list-items-confirm": "คุณแน่ใจว่าจะลบรายการที่ทำแล้วทั้งหมดหรือไม่? (การกระทำนี้ไม่สามารถย้อนกลับได้)" }, "message": { "archived-successfully": "เก็บถาวรเรียบร้อยแล้ว", @@ -135,7 +137,8 @@ "restored-successfully": "กู้คืนเรียบร้อยแล้ว", "succeed-copy-link": "คัดลอกลิงก์เรียบร้อยแล้ว", "update-succeed": "อัปเดตเรียบร้อยแล้ว", - "user-not-found": "ไม่พบผู้ใช้งาน" + "user-not-found": "ไม่พบผู้ใช้งาน", + "remove-completed-task-list-items-successfully": "ลบเรียบร้อย!" }, "reference": { "add-references": "เพิ่มข้อมูลอ้างอิง", @@ -297,7 +300,8 @@ "enable-password-login-warning": "สิ่งนี้จะเปิดใช้งานการเข้าสู่ระบบด้วยรหัสผ่านสำหรับผู้ใช้ทุกคน ดำเนินการต่อหากคุณต้องการให้ผู้ใช้สามารถเข้าสู่ระบบโดยใช้ทั้ง SSO และรหัสผ่าน", "max-upload-size": "ขนาดการอัปโหลดสูงสุด (MiB)", "max-upload-size-hint": "ค่าที่แนะนำคือ 32 MiB", - "server-name": "ชื่อเซิร์ฟเวอร์" + "server-name": "ชื่อเซิร์ฟเวอร์", + "removed-completed-task-list-items": "เปิดใช้งานการลบรายการที่ทำแล้ว" } }, "tag": { diff --git a/web/src/locales/tr.json b/web/src/locales/tr.json index 180ce60d1e925..aeb2386ec6670 100644 --- a/web/src/locales/tr.json +++ b/web/src/locales/tr.json @@ -118,7 +118,9 @@ "private": "Sadece sizin için görünür", "protected": "Çalışma Alanı", "public": "Herkese açık" - } + }, + "remove-completed-task-list-items": "Tamamlananları Kaldır", + "remove-completed-task-list-items-confirm": "Tüm tamamlanan görevleri kaldırmak istediğinize emin misiniz? (Bu işlem geri alınamaz)" }, "message": { "archived-successfully": "Başarıyla arşivlendi", @@ -135,7 +137,8 @@ "restored-successfully": "Başarıyla geri yüklendi.", "succeed-copy-link": "Bağlantı panosuna bağlantı kopyalandı.", "update-succeed": "Başarıyla güncellendi", - "user-not-found": "Kullanıcı bulunamadı" + "user-not-found": "Kullanıcı bulunamadı", + "remove-completed-task-list-items-successfully": "Başarıyla kaldırıldı!" }, "reference": { "add-references": "Referans ekle", @@ -297,7 +300,8 @@ "enable-password-login-warning": "Bu, tüm kullanıcılar için parola girişini etkinleştirecektir. Yalnızca kullanıcıların hem SSO hem de parola kullanarak oturum açabilmesini istiyorsanız devam edin", "max-upload-size": "Maksimum yükleme boyutu (MiB)", "max-upload-size-hint": "Önerilen değer 32 MiB'dir.", - "server-name": "Uygulama Adı" + "server-name": "Uygulama Adı", + "removed-completed-task-list-items": "Tamamlananları Kaldırma'yı Etkinleştir" } }, "tag": { diff --git a/web/src/locales/uk.json b/web/src/locales/uk.json index e8799759ec34c..b2d9280e2f83b 100644 --- a/web/src/locales/uk.json +++ b/web/src/locales/uk.json @@ -118,7 +118,9 @@ }, "links": "Посилання", "to-do": "Список справ", - "code": "Код" + "code": "Код", + "remove-completed-task-list-items": "Видалити виконані", + "remove-completed-task-list-items-confirm": "Ви впевнені, що хочете видалити всі виконані задачі? (Ця дія неодмінна)" }, "message": { "archived-successfully": "Архівовано успішно", @@ -135,7 +137,8 @@ "restored-successfully": "Успішно відновлено", "succeed-copy-link": "Посилання успішно скопійовано.", "update-succeed": "Оновлення успішне", - "user-not-found": "Користувача не знайдено" + "user-not-found": "Користувача не знайдено", + "remove-completed-task-list-items-successfully": "Видалення виконаних успішно!" }, "reference": { "add-references": "Додати посилання", @@ -345,6 +348,7 @@ "markdown": { "code-block": "Блок коду", "checkbox": "Чекбокс", - "content-syntax": "Синтаксис вмісту" + "content-syntax": "Синтаксис вмісту", + "removed-completed-task-list-items": "Увімкнути видалення виконаних" } } diff --git a/web/src/locales/vi.json b/web/src/locales/vi.json index 3fc4d1ae058e5..dc51af1284af6 100644 --- a/web/src/locales/vi.json +++ b/web/src/locales/vi.json @@ -118,7 +118,9 @@ }, "links": "Liên kết", "to-do": "Việc cần làm", - "code": "Mã" + "code": "Mã", + "remove-completed-task-list-items": "Xóa đã hoàn thành", + "remove-completed-task-list-items-confirm": "Bạn có chắc chắn muốn xóa tất cả các mục đã hoàn thành không? (Hành động này không thể đảo ngược)" }, "message": { "archived-successfully": "Lưu trữ thành công", @@ -141,7 +143,8 @@ "add-references": "Thêm tham chiếu", "embedded-usage": "Sử dụng như nội dung nhúng", "no-memos-found": "Không tìm thấy ghi chú", - "search-placeholder": "Tìm kiếm nội dung" + "search-placeholder": "Tìm kiếm nội dung", + "remove-completed-task-list-items-successfully": "Xóa thành công!" }, "resource": { "clear": "Xóa", @@ -299,7 +302,8 @@ "enable-password-login-warning": "Điều này sẽ bật đăng nhập bằng mật khẩu cho tất cả người dùng. Chỉ tiếp tục nếu bạn muốn người dùng có thể đăng nhập bằng cả SSO và mật khẩu", "max-upload-size": "Kích thước tải lên tối đa (MiB)", "max-upload-size-hint": "Giá trị đề xuất là 32 MiB.", - "server-name": "Tên máy chủ" + "server-name": "Tên máy chủ", + "removed-completed-task-list-items": "Kích hoạt xóa đã hoàn thành" }, "memo-related": "Ghi chú", "access-token-section": { diff --git a/web/src/locales/zh-Hans.json b/web/src/locales/zh-Hans.json index 082594da1b990..506021880b5f6 100644 --- a/web/src/locales/zh-Hans.json +++ b/web/src/locales/zh-Hans.json @@ -118,7 +118,9 @@ }, "links": "链接", "to-do": "待办", - "code": "代码" + "code": "代码", + "remove-completed-task-list-items": "移除已办", + "remove-completed-task-list-items-confirm": "您确定要移除所有完成的待办吗?(此操作不可逆)" }, "message": { "archived-successfully": "归档成功", @@ -135,7 +137,8 @@ "restored-successfully": "恢复成功", "succeed-copy-link": "复制链接到剪贴板成功。", "update-succeed": "更新成功", - "user-not-found": "未找到该用户" + "user-not-found": "未找到该用户", + "remove-completed-task-list-items-successfully": "移除成功!" }, "reference": { "add-references": "添加引用", @@ -297,7 +300,8 @@ "enable-password-login-warning": "启用所有用户的密码登录。如果希望用户同时使用单点登录和密码登录,请开启密码登录", "max-upload-size": "最大上传大小 (MiB)", "max-upload-size-hint": "建议值为 32 MiB。", - "server-name": "服务器名称" + "server-name": "服务器名称", + "removed-completed-task-list-items": "启用移除已办" }, "memo-related": "备忘录" }, diff --git a/web/src/locales/zh-Hant.json b/web/src/locales/zh-Hant.json index c95306ec05083..4731b3329ff84 100644 --- a/web/src/locales/zh-Hant.json +++ b/web/src/locales/zh-Hant.json @@ -118,7 +118,9 @@ "private": "私人", "protected": "成員可見", "public": "公開給所有人" - } + }, + "remove-completed-task-list-items": "移除已完成", + "remove-completed-task-list-items-confirm": "您確定要移除所有完成的待辦嗎?(此操作不可逆)" }, "message": { "archived-successfully": "封存成功", @@ -135,7 +137,8 @@ "restored-successfully": "還原成功", "succeed-copy-link": "複製連結到剪貼簿成功。", "update-succeed": "更新成功", - "user-not-found": "查無該使用者" + "user-not-found": "查無該使用者", + "remove-completed-task-list-items-successfully": "移除成功!" }, "reference": { "add-references": "添加參考資料", @@ -298,7 +301,8 @@ "enable-password-login-warning": "啟用所有使用者的密碼登入。如果希望使用者同時使用 SSO 和密碼登入,請開啟密碼登入", "max-upload-size": "最大上傳檔案大小 (MiB)", "max-upload-size-hint": "建議值為 32 MiB。", - "server-name": "伺服器名稱" + "server-name": "伺服器名稱", + "removed-completed-task-list-items": "啟用移除已完成" } }, "tag": {