DavidVentura/offline-translator
DavidVentura/offline-translator has 1,381 GitHub stars and 61 forks. GitHot measured +2 stars in 24 hours and +21 in 7 days. Last checked 2026-11-09 05:38 UTC. Last push 2026-10-28.
Use Firefox Translation Models for on-device translation on Android
What you can do
- Translate text - Share text from any app, or type directly
- Translate text (mini popup) - Long-press text on any app → tap "Translate" in the copy/share bar
- Translate a URL - Share a link from any app
- Translate an image - Share an image from any app
Measured star growth
- in 24h
- +2
- in 7 days
- +21
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalTranslator
An Android translator app that performs text, PDF/ODT documents and image translation completely offline using on-device models.
Supports automatic language detection and transliteration for non-latin scripts. There's also a built-in word dictionary.
This project is hosted on GitHub and mirrored to Codeberg.
How It Works
Complete offline translation - download language packs once, translate forever without internet.
Language packs contain the full translation models, translation happens on your device, no requests are sent to external servers.
Screenshots
https://github.com/user-attachments/assets/bf774a4f-3d58-49b7-b4e2-cb30eb395b39
Supported languages
- Afrikaans
- Albanian
- Arabic
- Azerbaijani
- Basque
- Belarusian
- Bengali
- Bosnian
- Bulgarian
- Catalan
- Chinese (简体)
- Chinese (繁體)
- Croatian
- Czech
- Danish
- Dutch
- English
- Estonian
- Finnish
- French
- Galician
- Georgian
- German
- Greek
- Gujarati
- Hebrew
- Hindi
- Hungarian
- Icelandic
- Indonesian
- Italian
- Japanese
- Kannada
- Korean
- Latvian
- Lithuanian
- Malay
- Malayalam
- Marathi
- Norwegian
- Norwegian Bokmål
- Norwegian Nynorsk
- Persian
- Polish
- Portuguese
- Romanian
- Russian
- Serbian
- Slovak
- Slovenian
- Spanish
- Swahili
- Swedish
- Tagalog
- Tamil
- Telugu
- Thai
- Turkish
- Ukrainian
- Urdu
- Uyghur
- Vietnamese
Tech
- Translation models are Firefox' translations models
- OCR models are PaddleOCR
- Automatic language detection is done via cld2
- Dictionary is based on data from Wiktionary, exported by Kaikki
- For Japanese specifically, there's a second "word dictionary" (Mecab) for transliterating Kanji
- TTS uses Piper, Coqui, Kokoro, MMS, Sherpa ONNX, Mimic3 voices
- PDF surgery uses mupdf and lopdf
- Inference engines are:
Features & How to Use
| Feature | How to trigger |
|---|---|
| Translate text | Share text from any app, or type directly |
| Translate text (mini popup) | Long-press text on any app → tap "Translate" in the copy/share bar |
| Translate a URL | Share a link from any app |
| Translate an image | Share an image from any app |
| Translate a document | Open the documents tab inside the app |
| Dictionary lookup | Long-press a word inside the app |
| Change TTS voice / speed | Long-press the play button |
For developers
This app exposes an API (see ITranslationService.aidl) that other apps can use to request translations.
Manual offline setup
If you want to use this app on a device with no internet access, you can put the language files on Documents/dev.davidv.translator. Check
OFFLINE_SETUP.md for details.
Verification info
SHA-256 hash of signing certificate: 2B:38:06:E7:45:D8:09:01:8A:51:BE:58:D0:63:5F:FC:74:CC:97:33:43:94:07:AB:1E:D0:42:4A:4D:B3:E1:FB
Funding
This project was funded through the NGI Mobifree Fund, a fund established by NLnet.
If you want, you can help pay for the CDN costs:
Building
bash build.sh
will trigger a build in a docker container, matching the CI environment.
Releasing
- Bump
app/build.gradle.ktsversionName and versionCode - Create a changelog in
fastlane/metadata/android/en-US/changelogsas${versionCode*10+1}.txt(and+2) - Build:
bash build.sh - Sign:
bash sign-apk.sh keystore.jks keystorepass pass alias - Create a tag that is
v${versionName}(eg:v0.1.0) - Create a Github release named
v${versionName}(eg:v0.1.0)- Upload both signed APKs to the release
gh release create --prerelease v0.4.0-rc1 -F fastlane/metadata/android/en-US/changelogs/XX1.txt signed/translator-arm64-0.4.0.apk signed/translator-armv7-0.4.0.apk
Each ABI gets a unique versionCode: versionCode * 10 + abiOffset (armv7=1, arm64=2, x86=3, x86_64=4).
Signing APK
bash sign-apk.sh keystore.jks keystorepass pass alias
will sign the APKs built by build.sh and place the signed copies in signed/translator-{arm64,armv7}-${version}.apk
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,280 starspublic-apis/public-apis
A collective list of free APIs
497,542 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
446,110 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,237 stars



