Use Firefox Translation Models for on-device translation on Android
Kotlin
1,287
836 commits
updated Oct 3, 2026
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.
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.
https://github.com/user-attachments/assets/bf774a4f-3d58-49b7-b4e2-cb30eb395b39
| 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 |
This app exposes an API (see ITranslationService.aidl) that other apps can use to request translations.
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.
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
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:
bash build.sh
will trigger a build in a docker container, matching the CI environment.
app/build.gradle.kts versionName and versionCodefastlane/metadata/android/en-US/changelogs as ${versionCode*10+1}.txt (and +2)bash build.shbash sign-apk.sh keystore.jks keystorepass pass aliasv${versionName} (eg: v0.1.0)v${versionName} (eg: v0.1.0)
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.apkEach ABI gets a unique versionCode: versionCode * 10 + abiOffset (armv7=1, arm64=2, x86=3, x86_64=4).
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
744 followers · starred Sep 2025
411 followers · starred Apr 2026
1,093 followers · starred Sep 2025
310 followers · starred Sep 2025
Use Firefox Translation Models for on-device translation on Android
Kotlin
1,287
836 commits
updated Oct 3, 2026
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.
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.
https://github.com/user-attachments/assets/bf774a4f-3d58-49b7-b4e2-cb30eb395b39
| 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 |
This app exposes an API (see ITranslationService.aidl) that other apps can use to request translations.
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.
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
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:
bash build.sh
will trigger a build in a docker container, matching the CI environment.
app/build.gradle.kts versionName and versionCodefastlane/metadata/android/en-US/changelogs as ${versionCode*10+1}.txt (and +2)bash build.shbash sign-apk.sh keystore.jks keystorepass pass aliasv${versionName} (eg: v0.1.0)v${versionName} (eg: v0.1.0)
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.apkEach ABI gets a unique versionCode: versionCode * 10 + abiOffset (armv7=1, arm64=2, x86=3, x86_64=4).
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
744 followers · starred Sep 2025
411 followers · starred Apr 2026
1,093 followers · starred Sep 2025
310 followers · starred Sep 2025