translit

A small Python library for name-aware transliteration. Eight language pairs. github.com/T-Fizz/translit

Try it

loading Python in browser…

Runs the actual Python library locally in your browser via Pyodide + WebAssembly. First load is ~30 MB (cached after); subsequent calls are instant. Thai is the only pair unavailable here — its library has native code that Pyodide can't run. Use the package directly for that.

Examples

from translit_core import transliterate

transliterate("カナちゃん", "en")                              # → "Kana-chan"
transliterate("山田太郎", "en", source_lang="ja")              # → "Yamada Taro"
transliterate("山田太郎", "en", source_lang="ja",
              name_order="given-first")                      # → "Taro Yamada"
transliterate("김정은", "en", source_lang="ko")                # → "Kim Jeong-eun"
transliterate("Иван Сергеевич Тургенев", "en")                # → "Ivan Sergeevich Turgenev"
transliterate("नरेंद्र मोदी", "en", source_lang="hi")           # → "Narendra Modi"
transliterate("عبد الرحمن", "en", source_lang="ar")            # → "Abdul-Rahman"
transliterate("ทักษิณ", "en", source_lang="th")               # → "Thaksin"
transliterate("John Smith", "ja")                              # → "ジョン・スミス"

Returns None when the engine can't deterministically romanize an input. Fail-soft: callers see a clear signal, never a half-translated guess.

Install

pip install -e git+https://github.com/T-Fizz/translit.git#egg=translit-core

Supported pairs

SourceTargetMethod
Japanese (kana + kanji)Latinpykakasi passport-style + 22 honorifics + reverse-katakana round-trip
Chinese (Hanzi)Latinpypinyin (no tones)
Korean (Hangul)LatinRR + 36-name surname overlay + 3 honorifics
Russian (Cyrillic)LatinBGN/PCGN press-style
Hindi (Devanagari)LatinIAST + diacritic strip + schwa deletion
ArabicLatinCurated 50-name overlay
ThaiLatinRTGS via pythainlp
English (Latin)Japanese (katakana)alkana + acronym fallback

What it handles

Read more