subtitle-translate · Subtitle Translation

Subtitle translation: translates existing subtitles (SRT/VTT/ASS) into a target language, producing bilingual (original + translation) or translation-only subtitles, optionally soft-muxed or hard-burned into the video.
An LLM translates line by line with strict line-count and order matching; timeline parsing, format handling, bilingual merging, and burning are done by deterministic scripts — timestamps are never hand-edited. Bilingual defaults to original on top, translation below, order adjustable.
Example invocation: "Translate this English subtitle file into Chinese-English bilingual and burn it into the video."
Full brief
Positioning
subtitle-translate is an "existing subtitles → translation / bilingual / burn-in" translator: the LLM handles translation, deterministic scripts handle timelines, formats, merging, and burning. It translates subtitles — it doesn't generate them from speech.
Core capabilities
- Line-by-line translation: extract → translate line by line → merge; line count and order must match exactly (script-validated, errors on mismatch) — no lines added, merged, or split.
- Bilingual / translation-only: bilingual defaults to original on top, translation below (
--orderadjustable);--trans-onlyoutputs translation only. - Format handling: srt ↔ vtt ↔ ass conversion;
.assrecommended for hard-burning Chinese (built-in Noto Sans CJK styling, white original / yellow translation). - Two embedding modes: hard burn-in (baked into the picture) vs. soft muxing (toggleable in the player, picture untouched).
- Helper subcommands: parse (to JSON for review), build (subtitle from JSON), convert (format conversion).
Workflow
- Extract translatable text (note total line count N)
- Translate line by line into the target language (tone/terminology matched to the domain; spoken content stays spoken)
- Merge into bilingual or translation-only subtitles
- (Optional) soft-mux or hard-burn into the video
Inputs & outputs
| Input | Notes |
|---|---|
| Subtitle file | Required — .srt / .vtt / .ass path |
| Target language | Required — e.g. Chinese / English / Japanese |
| Output form | Optional — bilingual (default) / translation-only |
| Order | Optional — original on top (default) or translation on top |
| Video file | Optional — enables burn-in when provided |
Output (outputs/<theme>/): bilingual or translation-only subtitle file; *-sub.mp4 when burned in; plus a report (cue count, target language, form, output path).
Boundaries with adjacent skills
| Skill | Lane |
|---|---|
| subtitle-translate (this) | Translates existing subtitles into bilingual |
| auto-subtitle | Generates subtitles from speech (the first step when none exist) |
| video-editing | General video editing |
Fit
- Localizing foreign-language videos with bilingual subtitles
- Delivering final cuts with burned-in bilingual subtitles
- Subtitle format conversion and batch translation backfill
Before you start
- A subtitle file is required; generate one first with auto-subtitle if none exists.
- For hard-burned Chinese showing tofu boxes with SRT, pass
--font-dirtoburnpointing at a CJK font directory.
subtitle-translate is part of the Aiglade Skill library. Invoke it from the Aiglade chat box in plain language.