notemdpro-text-translator
NoteMD Pro - Translation
Overview
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.
When to Use
- Multi-language vault: Create translated versions of notes
- Language learning: Translate content for study
- International collaboration: Share notes across languages
- Content localization: Adapt content for different audiences
Function Call Chain
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
Key Functions (from translate.ts)
translateFile
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
batchTranslateFolder
Translates all markdown files in a folder.
export async function batchTranslateFolder(
settings: NotemdSettings,
folderPath: string,
targetLanguage: string,
): Promise<void>;
Settings
Translation Settings
| Setting | Description |
|---|---|
translateProvider |
LLM provider for translation |
translateModel |
Model for translation |
Output Settings
| Setting | Description |
|---|---|
useCustomTranslationSuffix |
Use custom filename suffix |
translationCustomSuffix |
Custom suffix (e.g., "_es", "_fr") |
useCustomTranslationSavePath |
Use custom save path |
translationSavePath |
Custom save path |
Language Settings
| Setting | Description |
|---|---|
language |
Default language code |
availableLanguages |
List of supported languages |
Prompt Template (translate)
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}
Supported Languages
The plugin supports multiple languages including:
- English (en)
- Spanish (es)
- French (fr)
- German (de)
- Chinese (zh)
- Japanese (ja)
- Korean (ko)
- And more...
Output File Naming
| 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 |
Error Handling
Common Errors
-
No provider configured
- Error: "No provider configured for translation"
- Solution: Configure translate provider in settings
-
Empty file
- Warning: "File is empty"
- Solution: Check source file content
-
Translation timeout
- Error: "Translation cancelled"
- Solution: Reduce chunk size, check network
Cancellation
- Users can cancel translation via AbortSignal
- Already translated chunks are preserved
- Partial results not saved on cancellation
Related skills
notemdpro— for broader NoteMD Pro workflow routingnotemdpro-content-generator— when translation follows generationobsidian-markdown— for markdown preservation guidance
More from zpankz/obsidian-skills
viva-llm
Use VIVA LLM for multi-provider chat, voice calls, terminal integration, assistants, skills, MCP tools, and agent mode inside Obsidian. Trigger when the user mentions VIVA LLM, voice chat, realtime voice, LLM providers in Obsidian, or vault-integrated AI chat.
1obsidian-plugin-accessibility
Use this skill when building or reviewing Obsidian plugin UI for keyboard access, ARIA labels, screen reader support, focus handling, or mobile touch targets. Accessibility is treated as mandatory, not optional.
1tasks
Create and query tasks using the Tasks plugin syntax including due dates, recurrence, priorities, and task queries. Use when the user mentions Tasks plugin, recurring tasks, task queries, or advanced task management in Obsidian.
1dataview
Create Dataview queries using DQL (Dataview Query Language), inline queries, and DataviewJS. Use when the user mentions Dataview, DQL, querying notes, listing notes by metadata, or creating dynamic views of vault content.
1defuddle
Extract clean markdown from web pages using Defuddle CLI, removing clutter to save tokens. Use when the user provides a URL to read or analyze.
1datacore
Create Datacore views using JSX/React syntax and the dc.* API. Use when the user mentions Datacore, dc.useQuery, JSX views, or React-based vault queries. Datacore is the successor to Dataview with better performance and interactive views.
1