From 89228f264fa74dbdfa12f1edf8944d49a1096ab0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 16 Nov 2025 17:34:56 +0200 Subject: [PATCH] feat(mindmap): add support for locales --- .../src/widgets/type_widgets/MindMap.tsx | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/apps/client/src/widgets/type_widgets/MindMap.tsx b/apps/client/src/widgets/type_widgets/MindMap.tsx index 4b3c8fe0d..715612947 100644 --- a/apps/client/src/widgets/type_widgets/MindMap.tsx +++ b/apps/client/src/widgets/type_widgets/MindMap.tsx @@ -1,15 +1,16 @@ import { useCallback, useEffect, useRef } from "preact/hooks"; import { TypeWidgetProps } from "./type_widget"; -import { MindElixirData, MindElixirInstance, Operation, default as VanillaMindElixir } from "mind-elixir"; +import { MindElixirData, MindElixirInstance, Operation, Options, default as VanillaMindElixir } from "mind-elixir"; import { HTMLAttributes, RefObject } from "preact"; // allow node-menu plugin css to be bundled by webpack import nodeMenu from "@mind-elixir/node-menu"; import "mind-elixir/style"; import "@mind-elixir/node-menu/dist/style.css"; import "./MindMap.css"; -import { useEditorSpacedUpdate, useNoteLabelBoolean, useSyncedRef, useTriliumEvent, useTriliumEvents } from "../react/hooks"; +import { useEditorSpacedUpdate, useNoteLabelBoolean, useSyncedRef, useTriliumEvent, useTriliumEvents, useTriliumOption } from "../react/hooks"; import { refToJQuerySelector } from "../react/react_utils"; import utils from "../../services/utils"; +import { DISPLAYABLE_LOCALE_IDS } from "@triliumnext/commons"; const NEW_TOPIC_NAME = ""; @@ -21,6 +22,24 @@ interface MindElixirProps { onChange?: () => void; } +const LOCALE_MAPPINGS: Record = { + ar: null, + cn: "zh_CN", + de: null, + en: "en", + en_rtl: "en", + es: "es", + fr: "fr", + it: "it", + ja: "ja", + pt: "pt", + pt_br: "pt", + ro: null, + ru: "ru", + tw: "zh_TW", + uk: null +}; + export default function MindMap({ note, ntxId, noteContext }: TypeWidgetProps) { const apiRef = useRef(null); const containerRef = useRef(null); @@ -110,12 +129,14 @@ export default function MindMap({ note, ntxId, noteContext }: TypeWidgetProps) { function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef: externalApiRef, onChange, editable }: MindElixirProps) { const containerRef = useSyncedRef(externalContainerRef, null); const apiRef = useRef(null); + const [ locale ] = useTriliumOption("locale"); function reinitialize() { if (!containerRef.current) return; const mind = new VanillaMindElixir({ el: containerRef.current, + locale: LOCALE_MAPPINGS[locale], editable }); @@ -143,7 +164,7 @@ function MindElixir({ containerRef: externalContainerRef, containerProps, apiRef if (data) { apiRef.current?.init(data); } - }, [ editable ]); + }, [ editable, locale ]); // On change listener. useEffect(() => {