|
||
---|---|---|
.gitea/workflows | ||
cmd | ||
docs | ||
pages | ||
public | ||
serve | ||
utils | ||
views | ||
.gitignore | ||
compose.yml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
instances2json.py | ||
instances.json | ||
LICENSE | ||
main.go | ||
README.md | ||
TODO.md |
It was initially made as a maintained fork/rewrite of simplytranslate, but has grown to have a lot more features as well!
I'm initially focusing on the api and engines, but eventually Mozhi will have a functioning CLI and webapp.
Supported Engines:
- Reverso
- DeepL
- LibreTranslate
- Yandex
- MyMemory
- DuckDuckGo ( 1-1 with Bing Translate )
Projects that use Mozhi
- select2translate - Translate text from your selection clipboard using Mozhi
- Crow Translate - KDE Project written in C++ / Qt that allows you to translate and speak text using Mozhi
Where is the engine code?
The engine code has recently been split from the main codebase. Please check aryak/libmozhi for it.
Installing
You can either use docker or the build artifacts from CI jobs on git.projectsegfau.lt.
Building
GOPRIVATE=codeberg.org/aryak/libmozhi # Get latest commit since proxy server is a bit slow
go mod download
go run github.com/swaggo/swag/cmd/swag@latest init --parseDependency
go build -o mozhi
API Docs
Mozhi makes use of swagger (using the fiber middleware) to manage the documentation of the API.
You can find it in /api/swagger of any instance (example).
Why does Reverso not work?
Reverso sometimes blocks IPs of servers hosting mozhi, and since it doesn't have IPv6, an IP Rotator won't be viable. For more information, check out #27
Configuration
Features of Mozhi can be customized and toggled on/off using Environment Variables.
MOZHI_PORT
: Port the webserver listens on (if hosting API)MOZHI_LIBRETRANSLATE_URL
: URL of Libretranslate instance (Example:MOZHI_LIBRETRANSLATE_URL=https://lt.psf.lt
)MOZHI_DEFAULT_SOURCE_LANG
: Language to default to if no source language is set by user. Defaults to Auto-Detect (or first available language in engines which dont support it)MOZHI_DEFAULT_PREFER_AUTODETECT
: Prefer autodetect if available instead of specified/default source language. Defaults to falseMOZHI_DEFAULT_TARGET_LANG
: Language to default to if no target language is set by user. Defaults to English
These envvars turn off/on engines. By default all of them are enabled.
MOZHI_GOOGLE_ENABLED
MOZHI_REVERSO_ENABLED
MOZHI_DEEPL_ENABLED
MOZHI_LIBRETRANSLATE_ENABLED
MOZHI_YANDEX_ENABLED
MOZHI_MYMEMORY_ENABLED
MOZHI_DUCKDUCKGO_ENABLED
Instances
Link | Cloudflare | Country | ISP |
---|---|---|---|
mozhi.aryak.me | No | India | Airtel |
translate.bus-hit.me | No | Canada | Oracle |
nyc1.mz.ggtyler.dev | No | USA | Royale Hosting |
translate.projectsegfau.lt | No | Germany / USA / India | Avoro / Racknerd / Airtel |
translate.nerdvpn.de | No | Ukraine | vsys.host |
mozhi.ducks.party | No | Germany | Datalix |
mozhi.frontendfriendly.xyz | No | USA | Hetzner |
mozhi.pussthecat.org | No | Germany | Hetzner |
mo.zorby.top | No | Germany | pawhost.de |
mozhi.adminforge.de | No | Germany | Hetzner |
translate.privacyredirect.com | No | Finland | Private WebHost |
mozhi.canine.tools | No | USA | RoyaleHosting |
mozhi.gitro.xyz | Yes | Germany | Hetzner |
mozhi.frontendfriendly.xyz (Tor) | No | USA | Hetzner |
mozhi.ducks.party (Tor) | No | Germany | Datalix |
mo.zorby.top (Tor) | No | Germany | pawhost.de |
mo.zorby.top (I2P) | No | Germany | pawhost.de |
Features
- An all mode where the responses of all supported engines will be shown.
- Autodetect which will show the language that was detected
- Text-To-Speech for multiple engines
- A good API (subjective :P)
- All the stuff you expect from a translation utility :)
Etymology
Mozhi is the word in Tamil for language. Simple as that :P
Credits
- Arya: creator
- Midou36o: made the logo
- py_: Design files
- Missuo: creating gDeepLX that does the hard part of making DeepL work
- translatepy: giving me the format of request for yandex engine
- SimplyTranslate: Inspiration and base code for the webui
- Rimgo: Code for embedding html in binary
- Bnyro: Parallelization of all engines