mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
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 <lcl_em@163.com>
This commit is contained in:
@ -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 (
|
||||
<Dropdown>
|
||||
<MenuButton slots={{ root: "div" }}>
|
||||
@ -143,6 +182,12 @@ const MemoActionMenu = (props: Props) => {
|
||||
{memo.rowStatus === RowStatus.ARCHIVED ? <ArchiveRestoreIcon className="w-4 h-auto" /> : <ArchiveIcon className="w-4 h-auto" />}
|
||||
{memo.rowStatus === RowStatus.ARCHIVED ? t("common.restore") : t("common.archive")}
|
||||
</MenuItem>
|
||||
{!hiddenActions?.includes("remove_completed_task_list") && (
|
||||
<MenuItem color="danger" onClick={handleRemoveCompletedTaskListItemsClick}>
|
||||
<SquareCheckIcon className="w-4 h-auto" />
|
||||
{t("memo.remove-completed-task-list-items")}
|
||||
</MenuItem>
|
||||
)}
|
||||
<MenuItem color="danger" onClick={handleDeleteMemoClick}>
|
||||
<TrashIcon className="w-4 h-auto" />
|
||||
{t("common.delete")}
|
||||
|
@ -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: Props) => {
|
||||
<relative-time datetime={memo.displayTime?.toISOString()} format={relativeTimeFormat}></relative-time>
|
||||
);
|
||||
|
||||
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 (
|
||||
<div
|
||||
className={clsx(
|
||||
@ -199,12 +230,7 @@ const MemoView: React.FC<Props> = (props: Props) => {
|
||||
</Tooltip>
|
||||
)}
|
||||
{!readonly && (
|
||||
<MemoActionMenu
|
||||
className="-ml-1"
|
||||
memo={memo}
|
||||
hiddenActions={props.showPinned ? [] : ["pin"]}
|
||||
onEdit={() => setShowEditor(true)}
|
||||
/>
|
||||
<MemoActionMenu className="-ml-1" memo={memo} hiddenActions={handleHiddenActions()} onEdit={() => setShowEditor(true)} />
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -88,7 +88,9 @@
|
||||
"private": "خاص",
|
||||
"protected": "مساحة عمل",
|
||||
"public": "عام"
|
||||
}
|
||||
},
|
||||
"remove-completed-task-list-items": "إزالة المنجز",
|
||||
"remove-completed-task-list-items-confirm": "هل أنت متأكد أنك تريد إزالة جميع المهام المنجزة؟ (هذه العملية لا يمكن التراجع عنها)"
|
||||
},
|
||||
"resource": {
|
||||
"clear": "مسح",
|
||||
|
@ -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": {
|
||||
|
@ -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":{
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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": "साफ़ करें",
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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"
|
||||
},
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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",
|
||||
@ -296,7 +299,8 @@
|
||||
"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"
|
||||
"server-name": "Ime strežnika",
|
||||
"removed-completed-task-list-items": "Omogoči odstranitev končanih"
|
||||
},
|
||||
"memo-related": "Beležka"
|
||||
},
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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": {
|
||||
|
@ -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": {
|
||||
|
@ -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": "Увімкнути видалення виконаних"
|
||||
}
|
||||
}
|
||||
|
@ -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": {
|
||||
|
@ -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": "备忘录"
|
||||
},
|
||||
|
@ -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": {
|
||||
|
Reference in New Issue
Block a user