Choose your translation engine: DeepL API supports direct SRT file upload and returns a translated SRT file, preserving timing cues automatically; AWS Translate requires you to extract cue text, translate it, and reconstruct the file
With the DeepL API, POST the SRT file directly to the document translation endpoint with 'Content-Type: multipart/form-data', include the 'target_lang' parameter (e.g., 'FR'), and poll the document status endpoint until translation is complete, then download the translated SRT
With AWS Translate, use the batch translation job: store the SRT file in S3, call 'StartTextTranslationJob' with 'ContentType' set to 'text/plain' and the S3 input/output paths — AWS Translate preserves timing delimiters in SRT when the file is correctly structured
After translation, validate that cue count and timing values are unchanged — translation can expand or contract text length but must not alter timestamp lines
For multi-language delivery, loop over target language codes and run a translation job per language, storing output files with language-coded filenames (e.g., 'episode01.fr.srt', 'episode01.de.srt')
Post-process translations for subtitle-specific issues: break long translated lines at natural phrase boundaries, enforce a maximum characters-per-line limit appropriate for your player, and check reading speed (typically under 20 characters per second)
Known gotchas
Machine translation does not respect subtitle line-break conventions — a translated line that fits within DeepL's character limits may still exceed the visual width of the subtitle safe area and need manual rebreaking
DeepL's document translation API has a per-document character limit on free and paid tiers — large SRT files with many cues may need splitting before upload
AWS Translate's batch job processes SRT as plain text and may misinterpret timing lines as translatable content if the file has unusual formatting — verify the output thoroughly before publishing
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp