Open-source project
dominostars/playtranslate avatar
dominostars/playtranslate

PlayTranslate: OCR screen translation that turns a game line into an Anki card

Real-time translation and language learning Android app for games, visual novels, manga, and any other screen text. 屏幕翻译 游戏翻译

1,303 stars58 forksKotlinGPL-3.0

At a glance

What is it?
PlayTranslate is an Android app that reads text off a game, visual novel or manga screen, translates it live, and lets you look words up in a floating lens or export the sentence to AnkiDroid as a card. It is sideloaded rather than store listed, works offline for OCR and dictionary lookups, and asks for accessibility permissions that Android 13 deliberately restricts.
Who is it for?
Adopt PlayTranslate if you play Japanese or Chinese games and visual novels on Android and want a repeatable study loop that ends in AnkiDroid cards, and if you are comfortable sideloading an APK and granting accessibility access. Do not adopt it on a device you cannot loosen, because the accessibility switch is restricted on Android 13 and later for sideloaded apps, and the app asks you to turn off Play Protect scanning during install.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 9 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Two modes: tap to translate, or let it translate the dialogue itself

PlayTranslate is a real time translation and language learning Android app for games, visual novels, manga and any other screen text. Its core interaction is a one-tap translation mode, where you capture the game screen and the text on it is translated, and an auto translation mode in which the app translates as the dialogue changes with no tapping required. The second mode is the one that changes how you play, since it turns a dialogue-heavy visual novel into something you can read in your own language without a pause per line. Around that sit the pieces that make it a study tool rather than a viewer. A word lookup lens can be hovered over any word for an immediate dictionary definition, furigana and pinyin modes show reading hints above characters in real time, text to speech reads a line aloud with a configurable default voice, and capture regions let you crop to just the dialogue box or the subtitle area. Text history keeps a record of captured sentences and is off by default, which is the right default for a feature whose cost is storage and privacy. Hotkeys let you bind a physical key to hold to preview a translation, which the README highlights as useful on handhelds with dedicated buttons.

The learning loop ends in AnkiDroid, not in a screenshot folder

The feature that separates PlayTranslate from a plain screen translator is the Anki export. Saved sentences go to AnkiDroid carrying the original text, the translation, a word list, the target words, text to speech and a screenshot, and the README goes further and says you can even record and include game audio. Card type selection is provided with presets for popular decks, so the export lands in a shape a specific deck can use rather than a plain text note. That combination of payload and preset is what makes the difference between a tool you use once and a tool you build a habit with. Alongside it sits Yomitan integration, where Yomitan dictionaries plug in, including pitch accent, frequency chips, kanji enrichment and merged term definitions, and the README notes that the definitions are merged everywhere including in the Anki card. The direction of travel is stated as well, with deeper integration promised for the future. The camera translation mode is a separate surface again, pointing the camera at text in the world, or freezing a frame so you can tap words and look them up.

Offline for OCR and lookups, optional for translation itself

The README is specific about what works without a connection: OCR and dictionary lookups work offline, with optional offline translation models. That distinction matters, because it splits the app into a guaranteed local path and a conditional one. The screen capture, the text recognition and the dictionary are local, so a game on a train with no signal still gives you readings and definitions. Full sentence translation is the part that needs either a network service or one of the optional local models, and the word optional is doing real work in that sentence, since it tells you the offline model is something you add rather than something that ships with the app. The repository layout is consistent with that design. Alongside the `app/` module there are `bergamot/` and `mnn/` directories, and the presence of a machine learning runtime directory suggests the local translation path is served by a vendored inference engine rather than by a bundled model file. The build side is Gradle based, with `build.sh`, `build-tools/`, `vendor/` and a `tests/` directory, and the `l10n-review/` directory matches the thirteen translated READMEs in `readme/`.

Installing a sideloaded APK, and the two ways Android fights back

There is no store listing, so installation is a manual sequence. You download the latest release APK, allow your browser or file manager to install unknown apps through Settings, Apps, Special app access, Install unknown apps, then open the APK and tap Install, and on first launch you follow the onboarding steps to grant the necessary permissions. Two failures are documented in enough detail to be useful. The first is Google Play Protect blocking the sideloaded APK with a vague App not installed or harmful app warning, in which case the README tells you to open the Play Store, go to your profile icon, tap Play Protect, tap the gear icon and turn off Scan apps with Play Protect, and then to re-enable it after installing so that other apps keep being scanned. The second is the accessibility permission, which the hotkey hold-to-preview feature needs. On Android 13 and later the switch is greyed out for any app installed from a downloaded APK, and the documented route is to select PlayTranslate in Settings, Accessibility, tap the greyed switch once and close the Restricted setting message, then open the app's App Info page, use the three-dot menu to choose Allow restricted settings, which only appears after that first step, authenticate if prompted, and finally turn the switch on.

Reading in 26 languages, writing in 59

The language coverage is stated as two separate numbers, and the distinction is a useful design idea. PlayTranslate translates from 26 game languages, meaning the text it can read off the screen, into 59 translation languages, meaning the language shown to you, and both tables are sorted by total worldwide speakers. Reading and writing are different problems: a script you can recognise in a screenshot is a bounded set, while a language you want the output in is a much larger set, and separating the two keeps the OCR side honest about what it can actually do. The source table spans English, Simplified and Traditional Chinese, Hindi, Spanish, Arabic, French, Portuguese, Russian, Indonesian, German, Japanese, Turkish, Vietnamese, Korean, Italian, Thai, Dutch, Romanian, Hungarian, Swedish, Catalan, Danish, Finnish, Norwegian and Polish. The implication for a user is that the pairings are not symmetric, so a language that appears only on the output side is a target you can read into, not a source you can scan, and the README does not describe per-language OCR quality beyond the counts, so that remains something you check on your own titles.

Why not just OCR and a translation app side by side

The obvious alternative is the split workflow: take a screenshot with a separate OCR tool, paste the text into a translation app or a browser tab, and copy the result into your note taking app. The difference in approach is that PlayTranslate keeps the whole loop in one process and one screen. The capture is already there, the dictionary lookup happens in place through the floating lens instead of a copy and paste, the furigana and pitch accent come from the same pipeline as the reading, and the Anki card is assembled from data the app already holds, including the screenshot and optionally the game audio. The Yomitan integration is the same idea taken further, since dictionaries that you would otherwise open in a browser extension are merged into the app's own lookup and into the exported card. The price is the one the README makes visible: the app needs screen capture, accessibility access, and on some devices a relaxed Play Protect setting during install, and it is a GPL-3.0 project distributed as an APK you install yourself rather than a store listing with a review process behind it.

Release cadence, licensing and where support happens

The project ships frequently, with tags v3.3.0 on 2026-09-30, v3.4.0 and v3.4.1 on 2026-10-14, and a push on 2026-10-14. That pattern fits an application whose users are reporting OCR and layout problems on specific games, since a fix for one title's dialogue box is often worth a release on its own. The licence is GPL-3.0, which for an end user means the app is free to obtain, modify and redistribute. Support is community run as well: the README points to a Discord server for issues, support and feature requests, and to a Ko-fi page for donations. The repository also carries a TRADEMARK.md file next to the LICENSE and a BUILD.md, and the localisation tooling in `l10n-review/` and the thirteen README translations in `readme/` show that the internationalisation of the project itself is treated as ongoing work rather than a one time translation.

Editorial conclusion

Adopt PlayTranslate if you play Japanese or Chinese games and visual novels on Android and want a repeatable study loop that ends in AnkiDroid cards, and if you are comfortable sideloading an APK and granting accessibility access. Do not adopt it on a device you cannot loosen, because the accessibility switch is restricted on Android 13 and later for sideloaded apps, and the app asks you to turn off Play Protect scanning during install. Verify three things before you rely on it: that the offline dictionary covers the titles you play, since offline translation models are optional rather than bundled, that the AnkiDroid card presets match the deck you use, and that your device is Android 10 or later, which is the minimum the badge states. The licence is GPL-3.0, releases reached v3.4.1 on 2026-10-14, and support is through the Discord server.

Frequently asked questions

How do I install the PlayTranslate APK on Android?

Download the latest release APK, allow your browser or file manager to install unknown apps through Settings, Apps, Special app access, Install unknown apps, then open the APK and tap Install. On first launch you follow the onboarding steps to grant the necessary permissions.

Why does PlayTranslate not install because of Google Play Protect?

On some devices Play Protect blocks sideloaded APKs and shows a vague App not installed or harmful app warning. The README describes turning off Scan apps with Play Protect from the Play Store, installing the APK, and then re-enabling Play Protect so other apps keep being scanned.

Can I enable accessibility for PlayTranslate on Android 13 or later?

The switch is greyed out for sideloaded apps, and the README gives the route: select PlayTranslate in Settings, Accessibility, tap the greyed switch and close the message, then open the App Info page, choose Allow restricted settings from the three-dot menu, authenticate, and turn the switch on.

Does PlayTranslate work without an internet connection?

OCR and dictionary lookups work offline. Full translation needs either a network service or one of the optional offline translation models, which the README describes as optional rather than bundled.

What does PlayTranslate send to AnkiDroid?

The original text, the translation, a word list, the target words, text to speech and a screenshot, and the README says you can even record and include game audio. Card type selection is provided with presets for popular decks.

Official sources

  1. dominostars/playtranslate on GitHub
  2. License: GPL-3.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/dominostars-playtranslate.svg)](https://hysenlabs.com/projects/dominostars-playtranslate)