Rust Library to transliterate between scripts.
serde
and json
dependencies and reading from data.rs would improve the build time but it made it much much worse.aksharamukha-python
on the same conversion. (Can be made even better)Despite these issues it seems sufficient for basic conversion requirement.
git clone https://github.com/MSSRPRAD/ transliterate-ferris.git
cd transliterate-ferris
time cargo run --release 1>out.txt 2>error.txt
out.txt
contains the output.
error.txt
contains the warnings and error messages emmitted by the program.
main.rs
contains a sort of 'demo'. The input text is given by:
let input: String = "अस्त्य् उत्तरस्यां दिशि देवतात्मा हिमालयो नाम नगाधिराजः ।
पूर्वापरौ तोयनिधी विगाह्य स्थितः पृथिव्या इव मानदण्डः ॥"
.to_string();
You can change it to try different test cases.
The output generated for the above input text was:
"asty uttarasyAM diSi devatAtmA himAlayo nAma nagADirAjaH .\n pUrvAparO toyaniDI vigAhya sTitaH pfTivyA iva mAnadaRqaH .."
Many more transliterations between scripts not mentioned here can be achieved indirectly (eg: telugu->devanagari = telugu->slp1->devanagari)
| source key | destination key | function | | ---------- | --------------- | ------------------------ | | devanagari | slp1 | convertindictoroman() | | devanagari | iast | convertindictoroman() | | devanagari | hk | convertindictoroman() | | telugu | slp1 | convertindictoroman() | | telugu | iast | convertindictoroman() | | telugu | hk | convertindictoroman() | | kannada | slp1 | convertindictoroman() | | kannada | iast | convertindictoroman() | | kannada | hk | convertindictoroman() | | slp1 | devanagari | convertromantoindic() | | slp1 | telugu | convertromantoindic() | | slp1 | kannada | convertromantoindic() | | slp1 | itrans | convertromantoroman() | | iast | slp1 | convertromantoroman() | | slp1 | iast | convertromantoroman() | | iast | slp1 | convertromantoroman() | | iast | itrans | convertromantoroman() | | iast | hk | convertromantoroman() | | devanagari | telugu | convertromantoroman() | | telugu | devanagari | convertromantoroman() | | devanagari | kannada | convertromantoroman() | | kannada | devanagari | convertromantoroman() | | kannada | telugu | convertromantoroman() | | telugu | kannada | convertromantoroman() |
Primary Focus was transliterating between devanagari to slp1 as many programs require input in slp1 and rust has no transliteration library from devanagari -> slp1 yet. It turned out making the convertromantoindic() and convertromantoroman() was not much different from this so I did that too.