Skip to content

Add Transliterate SE5 plugin - #313

Merged
niksedk merged 1 commit into
mainfrom
claude/se5-transliterate
Oct 8, 2026
Merged

niksedk merged 1 commit into
mainfrom
claude/se5-transliterate

Conversation

@niksedk

@niksedk niksedk commented Oct 8, 2026

Copy link
Copy Markdown
Member

New plugin: converts subtitle text between scripts, letter by letter (no translation, offline).

screenshot

Languages

  • Cyrillic ↔ Latin: Serbian, Montenegrin (ś/ź), Macedonian (Scientific or ASCII system), Uzbek (oʻ/gʻ, any apostrophe accepted)
  • To Latin: Russian (Readable or ISO 9), Ukrainian (official 2010), Belarusian (BGN/PCGN style), Bulgarian (official 2009), Kazakh (2021 alphabet), Greek (ELOT 743), Korean (Revised Romanization with sound-change rules)

Kept as-is: tags (<i>, {\an8}), URLs/e-mails, letter case (Љубав → Ljubav, ЉУБАВ → LJUBAV), text already in the target script. When going back to Cyrillic it also leaves words with q/w/x/y, Roman numerals and an editable Keep in Latin list. Handles Serbian split digraphs (injekcija, nadživeti).

UI (Avalonia + Material Design icons, follows the SE theme)

  • Language list with colored code tiles; the detected language is marked (guessed from the letters used, e.g. ђ/ћ/џ = Serbian, є/ї = Ukrainian, Serbian Latin with đ/ć)
  • Direction card with script tiles (Ж / Ω / 한 / A) and a swap button, next to a live example
  • System buttons for Russian/Macedonian, remembered per language
  • All/Selected lines, checkable before/after cards, OK = one undo step

Uses Subtitle.Paragraphs (keeps ASSA fields), falls back to SubRip for older SE.

Tests: 61 xunit tests (every language, detection, keep rules, view model). Checked the window headless in light and dark, Serbian both directions, Korean and the empty state.

Not verified by a native speaker: the Kazakh 2021 alphabet details (і = ı, И = İ casing) and the Belarusian system choice are the least certain; Korean sound changes cover the common rules only.

After merge: release via the workflow, then add the plugin to se5-plugins.json and the README.

🤖 Generated with Claude Code

Script conversion for Serbian, Montenegrin, Macedonian and Uzbek
(Cyrillic <-> Latin) and Russian, Ukrainian, Belarusian, Bulgarian,
Kazakh, Greek and Korean (to Latin). Detects language and direction,
keeps tags/URLs/case/keep-list words, system choice per language,
checkable before/after preview.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@niksedk
niksedk merged commit dfec411 into main Oct 8, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant