Go
Lipi Lekhika provides a fast Go transliteration package with a realtime typing module.
Requires Go 1.23+.
Installation
Section titled “Installation”go get github.com/shubhattin/lipilekhika/packages/go/lipilekhikaBasic Usage
Section titled “Basic Usage”Use Transliterate to convert text between scripts.
package main
import ( "fmt"
"github.com/shubhattin/lipilekhika/packages/go/lipilekhika")
func main() { out, err := lipilekhika.Transliterate( "na jAyatE mriyatE vA", "Normal", "Devanagari", nil, ) if err != nil { panic(err) } fmt.Println(out) // न जायते म्रियते वा}Transliterate signature:
func Transliterate( text string, fromScript string, toScript string, transOptions map[string]bool,) (string, error)text— text to transliteratefromScript— source script/language nametoScript— target script/language nametransOptions— optional custom option map (nilto skip)
Custom Transliteration Options
Section titled “Custom Transliteration Options”package main
import ( "fmt"
"github.com/shubhattin/lipilekhika/packages/go/lipilekhika")
func main() { out, err := lipilekhika.Transliterate( "गङ्गा", "Devanagari", "Gujarati", map[string]bool{ "brahmic_to_brahmic:replace_pancham_varga_varna_with_anusvAra": true, }, ) if err != nil { panic(err) } fmt.Println(out) // ગંગા}Custom Transliteration OptionsList of available transliteration option keys
Supported Scripts and LanguagesComplete script/language list and aliases
Realtime Typing
Section titled “Realtime Typing”Use the typing package for character-by-character input.
package main
import ( "fmt"
"github.com/shubhattin/lipilekhika/packages/go/lipilekhika/typing")
func main() { ctx, err := typing.NewTypingContext("Devanagari", nil) if err != nil { panic(err) }
diff, err := ctx.TakeKeyInput("k") if err != nil { panic(err) } fmt.Printf("delete=%d add=%q\n", diff.ToDeleteCharsCount, diff.DiffAddText)}In an editor-like workflow, apply each returned diff as:
- delete
ToDeleteCharsCountrunes from the current buffer tail - append
DiffAddText
Typing With Options
Section titled “Typing With Options”package main
import "github.com/shubhattin/lipilekhika/packages/go/lipilekhika/typing"
func main() { useNative := false includeInherent := true clearMs := 3000
ctx, _ := typing.NewTypingContext("Devanagari", &typing.TypingContextOptions{ AutoContextClearTimeMs: &clearMs, UseNativeNumerals: &useNative, IncludeInherentVowel: &includeInherent, })
_ = ctx}Key types:
typing.TypingContexttyping.TypingContextOptionstyping.TypingDiff
Runtime updates on context:
UpdateUseNativeNumerals(bool)UpdateIncludeInherentVowel(bool)ClearContext()
Realtime Typing ReferenceReference for implementing low-latency typing
Error Handling
Section titled “Error Handling”Next Steps
Section titled “Next Steps”- Explore custom transliteration options for fine-tuned control
- Check out supported scripts to see all available scripts
- Review realtime typing reference for advanced typing implementations
- Browse the Go API on pkg.go.dev