fork: add README-translation.md explaining the fork
A short readme so anyone stumbling on this repo understands: - what it is (Fossify Messages with on-the-fly translation via offline-translator AIDL) - that it's an experiment, not a maintained project — no commitment to keep it up to date or ship fixes - how to use it (install offline-translator first, opt in per source language) - the dependency story (dev.davidv.translator, bundled ML Kit language identification, transitional) - what's intentionally different from upstream Fossify (package id, no default-SMS prompt, sideload warning silenced) - build instructions Includes five screenshots in docs/: - conversation-list.jpg — translated snippets in the main list - thread-translated.jpg — Korean Amber Alert auto-translated to English, with the translate-icon toggle visible and numbers/URLs preserved verbatim - thread-original.jpg — same thread flipped back to the original - settings.jpg — Translation settings UI - cab-translate.jpg — long-press Translate item Fork-only — separate from the upstream-PR-candidate commits. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
06ac901366
commit
80fe124d12
6 changed files with 141 additions and 0 deletions
141
README-translation.md
Normal file
141
README-translation.md
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
# SMS translation fork of Fossify Messages
|
||||
|
||||
A small fork of [Fossify Messages](https://github.com/FossifyOrg/Messages) that
|
||||
auto-translates received SMS / MMS on-the-fly, on-device, with no cloud and
|
||||
no API keys.
|
||||
|
||||
## Why this might be interesting
|
||||
|
||||
If you live somewhere where you get important SMS in a language you don't
|
||||
read fluently (bank alerts, delivery notifications, OTPs, government
|
||||
messages…), this lets you keep using a clean FOSS messaging app and still
|
||||
understand them.
|
||||
|
||||
The translation itself is sub-second per message, runs entirely on-device
|
||||
(Mozilla Bergamot / Marian NMT models), and preserves numbers and URLs
|
||||
verbatim — so OTP codes, account numbers, tracking links, etc. don't get
|
||||
mangled.
|
||||
|
||||
- **Auto-translate**: each received bubble swaps to its translation as it
|
||||
scrolls into view; conversation-list snippets do the same.
|
||||
- **Per-language opt-in**: you choose which source languages get auto-
|
||||
translated (e.g. Korean → English) and which are left alone (e.g.
|
||||
Swedish, German, anything else you already read).
|
||||
- **Tap to flip**: a small icon next to each translated bubble toggles it
|
||||
back to the original.
|
||||
- **Manual translate**: long-press a bubble → ⋮ → **Translate** to force a
|
||||
one-off translation even for languages not on your auto-translate list.
|
||||
- **Copy / Share / Select** capture what you see on screen — if the bubble
|
||||
is showing English, your clipboard gets English.
|
||||
|
||||
## Screenshots
|
||||
|
||||
| Conversation list | Thread (translated) | Thread (original toggled back) |
|
||||
|---|---|---|
|
||||
|  |  |  |
|
||||
| Snippets are translated as you scroll, opted-in source languages only. | Auto-translate fires on view; the small icon below each bubble is the toggle. Numbers (145cm, 40kg, 112) and URLs (vo.la/1Pa9m) survive verbatim. | Tap the icon to flip a bubble back to its original. Tap again to flip back. |
|
||||
|
||||
| Translation settings | Manual translate (CAB ⋮) |
|
||||
|---|---|
|
||||
|  |  |
|
||||
| Pick which source languages auto-translate and your target. Off by default. | Long-press → ⋮ → Translate to force a one-off translation for non-allowlisted languages. |
|
||||
|
||||
## Status — please read
|
||||
|
||||
This is an **experiment**, not a maintained project.
|
||||
|
||||
- No commitment to keep it up to date with upstream Fossify or with Android.
|
||||
- No commitment to fix bugs or ship security updates.
|
||||
- No releases on F-Droid or Play. Built and signed locally by the author.
|
||||
- I'd like to propose the core feature upstream to Fossify Messages
|
||||
eventually; if they accept it, this fork's reason to exist mostly goes
|
||||
away. If they don't, I'll probably keep using my own build, but you
|
||||
should not depend on it.
|
||||
|
||||
If you want a clean, maintained build of Fossify Messages, install the
|
||||
official one from F-Droid. This fork is for tinkerers and for people who
|
||||
specifically want the translation behavior described above.
|
||||
|
||||
## Dependencies
|
||||
|
||||
1. **`dev.davidv.translator`** — the [offline-translator](https://github.com/DavidVentura/offline-translator)
|
||||
app on F-Droid. This is the engine. Install it, open it, download the
|
||||
language pack(s) for the languages you want to translate (e.g. Korean,
|
||||
the source side, plus the target language pack if it asks). It runs
|
||||
Mozilla's Bergamot translation models on-device.
|
||||
|
||||
Without this app installed, the translation feature silently does
|
||||
nothing — the messaging app still works as a plain SMS client.
|
||||
|
||||
2. **ML Kit Language Identification** — bundled inside this APK
|
||||
(`com.google.mlkit:language-id`, Apache-2.0). Used only for detecting
|
||||
what language an incoming SMS is in, so we can decide whether to
|
||||
translate it. About 4 MB of model data baked in. This is transitional:
|
||||
if davidv accepts a small AIDL addition upstream
|
||||
([offline-translator issue](https://github.com/DavidVentura/offline-translator))
|
||||
we'll drop ML Kit and use his detection directly.
|
||||
|
||||
3. **Android 8.0+** (same as upstream Fossify).
|
||||
|
||||
## How to use
|
||||
|
||||
1. Install **offline-translator** from F-Droid. Open it and download the
|
||||
language packs for the source language(s) you want translated (e.g.
|
||||
Korean) and confirm your target language pack is installed (usually
|
||||
English).
|
||||
2. Install this fork's APK (build it yourself — see below).
|
||||
3. Open this app → top-right ⋮ → **Settings** → **Translation**:
|
||||
- Turn on **Translate received messages**.
|
||||
- Pick your **Translate into** target (defaults to your device language).
|
||||
- Check the **Auto-translate from** languages you want auto-translated.
|
||||
4. Open any conversation. Bubbles in opted-in languages translate as you
|
||||
scroll. Tap the small translate icon below a bubble to flip between
|
||||
original and translation.
|
||||
|
||||
## How it differs from upstream Fossify Messages
|
||||
|
||||
The fork-only changes (not for upstream):
|
||||
|
||||
- **Different package ID** (`net.jeena.smstranslate`) so it installs
|
||||
alongside any official Fossify Messages.
|
||||
- **No "make me default SMS app" prompt** on first launch. You can still
|
||||
make it the default via Android Settings → Default apps → SMS app if you
|
||||
want — this just doesn't pester you about it.
|
||||
- **Sideload warning suppressed**. Fossify's built-in
|
||||
"this APK looks corrupted, go get the official one" dialog is silenced
|
||||
because of course this APK isn't the official one — it's a fork.
|
||||
|
||||
The translation feature itself lives in a separate `:translate` Gradle
|
||||
module and is structured so it can be cherry-picked onto upstream cleanly
|
||||
as a possible PR.
|
||||
|
||||
## Building from source
|
||||
|
||||
You need JDK 17 and the Android SDK.
|
||||
|
||||
```bash
|
||||
export JAVA_HOME=/path/to/jdk17
|
||||
export ANDROID_HOME=/path/to/android-sdk
|
||||
git clone <this repo>
|
||||
cd sms-translate
|
||||
./gradlew :app:assembleFossDebug
|
||||
# APK at app/build/outputs/apk/foss/debug/messages-*-foss-debug.apk
|
||||
adb install -r app/build/outputs/apk/foss/debug/messages-*-foss-debug.apk
|
||||
```
|
||||
|
||||
If you want a release build, set up a `keystore.properties` per upstream
|
||||
Fossify's instructions and `./gradlew :app:assembleFossRelease`.
|
||||
|
||||
## License
|
||||
|
||||
Same as upstream Fossify Messages: **GPL-3.0**. The AIDL stubs from
|
||||
offline-translator are also GPL-3.0. ML Kit is Apache-2.0.
|
||||
|
||||
## Credits
|
||||
|
||||
- [Fossify Messages](https://github.com/FossifyOrg/Messages) — the
|
||||
excellent FOSS messaging app this is a fork of.
|
||||
- [David Ventura](https://github.com/DavidVentura) — author of
|
||||
[offline-translator](https://github.com/DavidVentura/offline-translator),
|
||||
which does all the actual translation.
|
||||
- [Mozilla Bergamot](https://browser.mt/) — the underlying NMT models.
|
||||
Loading…
Add table
Add a link
Reference in a new issue