{"id":25899092,"url":"https://github.com/varnamproject/govarnam","last_synced_at":"2025-04-05T12:01:48.460Z","repository":{"id":43742245,"uuid":"397353130","full_name":"varnamproject/govarnam","owner":"varnamproject","description":"Easily type Indic languages on computer and mobile. GoVarnam is a cross-platform transliteration library. Manglish -\u003e Malayalam, Thanglish -\u003e Tamil, Hinglish -\u003e Hindi plus another 10 languages. GoVarnam is a near-Go port of libvarnam","archived":false,"fork":false,"pushed_at":"2024-12-14T19:01:31.000Z","size":382,"stargazers_count":147,"open_issues_count":28,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T11:03:00.156Z","etag":null,"topics":["hindi","ime","input-method","keyboard","language","linux","mac","malayalam","tamil","transliteration","windows"],"latest_commit_sha":null,"homepage":"https://varnamproject.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/varnamproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-17T18:21:04.000Z","updated_at":"2025-02-17T07:22:53.000Z","dependencies_parsed_at":"2024-04-07T06:26:22.977Z","dependency_job_id":"7a622dac-a5e9-4684-8dae-61248dc3854c","html_url":"https://github.com/varnamproject/govarnam","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varnamproject%2Fgovarnam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varnamproject%2Fgovarnam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varnamproject%2Fgovarnam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/varnamproject%2Fgovarnam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/varnamproject","download_url":"https://codeload.github.com/varnamproject/govarnam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247332556,"owners_count":20921853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hindi","ime","input-method","keyboard","language","linux","mac","malayalam","tamil","transliteration","windows"],"created_at":"2025-03-03T01:27:24.086Z","updated_at":"2025-04-05T12:01:48.439Z","avatar_url":"https://github.com/varnamproject.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Varnam \n\nVarnam is an Indian language transliteration library. GoVarnam is a brand new Go port of [libvarnam](https://github.com/varnamproject/libvarnam) with some core architectural changes.\n\nIt is stable to use daily as an input method. Try out different languages here: https://varnamproject.github.io/editor/\n\nMalayalam has really good support in Varnam. We welcome improvements of all languages in Varnam.\n\n* An [Input Method Engine](https://en.wikipedia.org/wiki/Input_method) for GNU/Linux operating systems via IBus is available here: https://github.com/varnamproject/govarnam-ibus\n* For macOS, there is a [Varnam IME too](https://github.com/varnamproject/varnam-macOS).\n* Windows: Need Help\n\n## Installation \u0026 Usage\n\nSee instructions in website: https://varnamproject.github.io/download/\n\nFAQ: https://varnamproject.github.io/docs/faq/\n\n\u003cbr/\u003e\n\n![](https://varnamproject.github.io/_index/free-to-write-anything.png)\n\n## Development\n\nProceed through these sections one by one:\n\n### Videos\n\nSee this video to understand more about Varnam (DebConf21):\n\n* PeerTube: https://peertube.debian.social/w/vWwMGcmTZG9n1UWv8ZdimB?s=1\n* YouTube: https://www.youtube.com/watch?v=pJpOWlD_7OI\n\n### Files \u0026 Folders\n\n* `govarnam` - The library files\n* `main.go, c-shared*` - Files that help in making the govarnam a C shared library\n* `govarnamgo` - Go bindings for the library. For use with other Go projects\n* `cli` - A CLI tool written in Go for Varnam. Uses `govarnamgo` to interface with the library.\n\n### Build Library\n\nRequires minimum Go version 1.16.\n\nThis repository have 3 things :\n\n1. GoVarnam library\n2. GoVarnam Command Line Utility (CLI)\n3. Go bindings for GoVarnam\n\nGoVarnam is written in Go, but to be a standard library that can be used with any other programming languages, we compile it to a C library. This is done by :\n```bash\ngo build -buildmode \"c-shared\" -o libgovarnam.so\n```\n\n(Shortcut to doing above is `make library`)\n\nThe output `libgovarnam.so` is a shared library that can be dynamically linked in any other programming languages using its header file `libgovarnam.h`. Some examples :\n\n* Go bindings for GoVarnam: See govarnam**go** folder in this repo\n* Java bindings for GoVarnam: https://github.com/varnamproject/govarnam-java/\n\nWait, it means we need to write another Go file to interface with GoVarnam library ! This is because we're interfacing with a C shared library and not the Go library directly. The `govarnamgo` acts as this interface for Go apps to use GoVarnam.\n\n### CLI (Command Line Utility)\n\nAfter making `libgovarnam.so` you can make the CLI to use GoVarnam :\n\n```\nmake cli\n```\n\nThe command line utility (CLI) is written in Go, uses govarnamgo to interface with the library.\n\nYou can build both library and CLI with just `make`.\n\n### Language Support\n\nVarnam uses a `.vst` (Varnam Symbol Table) file for language support. You can get it from it from `schemes` folder in [a release](https://github.com/varnamproject/schemes/releases). Place VST files in **one of these** locations (from high priority to least priority locations):\n\n* `$PWD/schemes` (PWD is Present Working Directory)\n* `/usr/local/share/varnam/schemes`\n* `/usr/share/varnam/schemes`\n\nNow we can use `varnamcli`:\n\n```\n# Show linker the path to search for libgovarnam.so\nexport LD_LIBRARY_PATH=$(realpath ./):$LD_LIBRARY_PATH\n\n./varnamcli -s ml namaskaaram\n```\n\nThe `ml` above is the scheme ID. It should match with the VST filename.\n\nYou can link the library to `/usr/local/lib` to skip doing the `export LD_LIBRARY_PATH` every time:\n\n```\nsudo ln -s $PWD/libgovarnam.so /usr/local/lib/libgovarnam.so\n```\n\nNow any software can find the GoVarnam library.\n\n### Testing\n\nYou can run tests (to make sure nothing broke) with :\n```bash\nmake test\n```\n\n### Use Varnam Live\n\nIt's good to install an IME to test changes you make to the library live.\n\n* Linux IME: https://github.com/varnamproject/govarnam-ibus\n* Mac IME (Coming Soon...): https://github.com/varnamproject/govarnam/issues/8\n* Windows IME (Coming Soon...): https://github.com/varnamproject/govarnam/issues/7\n\n### Changes from libvarnam\n\n* `ml.vst` has been changed to add a new `weight` column in `symbols` table. Get the new `ml.vst` here. The symbol with the least weight has more significance. This is calculated according to popularity from corpus. You can populate a `ml.vst` with weight values by a Python script. See that in the subfolder. The previous ruby script is used for making the VST. That is the same. **`ml.vst` from libvarnam is incompatible with govarnam**.\n\n* `patterns_content` is renamed to `patterns` in GoVarnam\n\n* `patterns` table in learnings DB won't store malayalam patterns. Instead, for each input, all possible malayalam words are calculated (from `symbols` VARNAM_MATCH_ALL) and searched in `words`. These are returned as suggestions. Previously, `pattern` would store every pattern to a word. english =\u003e malayalam.\n\n* `patterns` in govarnam is used solely for English words. `Computer =\u003e കമ്പ്യൂട്ടർ`. These English words won't work out with our VST tokenizer cause the words are not really transliterable in our language. It would be `kambyoottar =\u003e Computer`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarnamproject%2Fgovarnam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvarnamproject%2Fgovarnam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvarnamproject%2Fgovarnam/lists"}