Translate Obsidian markdown notes to different languages using LLM
This feature translates markdown notes to different languages using LLM. It supports single file translation, batch folder translation, and preserves markdown formatting and special elements like images.
translateFile (translate.ts)
├── read_file(inputPath)
├── splitContent(content, settings)
├── getProviderForTask('translate', settings)
├── callLLM(provider, prompt, chunk)
│ └── Translated chunk
├── join translated chunks
├── save translated file
│ └── write_file(outputPath, content)
└── open file (if enabled)
batchTranslateFolder
├── filter .md files in folder
├── createConcurrentProcessor
├── processFile for each file
└── ProgressModal reporting
Translates a single file to target language.
export async function translateFile(
settings: NotemdSettings,
inputPath: string,
targetLanguage: string,
progressReporter: ProgressReporter,
openFile?: boolean,
signal?: AbortSignal,
): Promise<string | null>;
// Returns: Path to translated file
Translates all markdown files in a folder.
export async function batchTranslateFolder(
settings: NotemdSettings,
folderPath: string,
targetLanguage: string,
): Promise<void>;
| Setting | Description |
| ------------------- | ---------------------------- |
| translateProvider | LLM provider for translation |
| translateModel | Model for translation |
| Setting | Description |
| ------------------------------ | ------------------------------------ |
| useCustomTranslationSuffix | Use custom filename suffix |
| translationCustomSuffix | Custom suffix (e.g., "_es", "_fr") |
| useCustomTranslationSavePath | Use custom save path |
| translationSavePath | Custom save path |
| Setting | Description |
| -------------------- | --------------------------- |
| language | Default language code |
| availableLanguages | List of supported languages |
From promptUtils.ts:
Translate the following text to {LANGUAGE}.
Only output the translated text.
Do not include the original text.
Note: For special image formats, please retain them as they are,
for example: 
Text to translate:
{TEXT}
The plugin supports multiple languages including:
| Setting | Example Input | Output |
| -------------- | --------------------------- | ---------------------- |
| Default suffix | note.md | note_es.md |
| Custom suffix | note.md | note.es.md |
| Custom path | note.md + translations/ | translations/note.md |
No provider configured
Empty file
Translation timeout
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks OpenClaw to add a note, list notes, search notes, or manage note folders.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
Manage Trello boards, lists, and cards via the Trello REST API.
Category:productivity