An offline Android application for text and speech translation.
Portus Translator executes translation on-device, requiring no network connection or remote server access after the initial setup.
- Input Methods: Supports both text input and voice dictation (Speech-to-Text).
- On-Device Execution: Translates to text locally across 7 supported languages. Text and voice inputs do not leave the device.
- Architecture Support: Packages native binaries for ARM 32-bit (
armeabi-v7a) and ARM 64-bit (arm64-v8a) to support a range of devices.
- Speech Synthesis: Generates spoken audio for translated results using local voice models.
- Toggle State: Speech generation can be toggled on or off from the main screen.
- Themes: Supports Light and Dark color themes.
- Font Size: Adjusts translation result text size to Small, Medium, Large, or Larger.
- Database Logging: Stores previous translation records in a local Room database.
- Recall: Tapping an entry in the history modal loads the text, translation, and any associated audio file back into the active interface.
- Management: Supports deleting individual records or clearing the entire database.
A first-run wizard sets up the application for offline use:
- Initial Setup: Select the application's interface language and download the offline translation and speech-to-text packages.
- Text-to-Speech Voices: Download the local voice files to enable voice synthesis playback.
- Translation Results: Translate text or voice inputs and play localized audio.
- Customization Drawer: Reconfigure default languages, switch themes (Dark/Light), adjust font sizes, and change the interface language.
- History Logs: Recall, replay, or delete stored translations from the local database.
- Aligned Dropdowns: Select source and target languages using selectors localized to your active interface language.
- Java Development Kit (JDK) 17
- Android SDK (Android API Level 31+)
Build the debug APK using the Gradle wrapper:
# Windows
cmd /c gradlew.bat assembleDebug
# macOS / Linux
./gradlew assembleDebugThe compiled output is written to:
app/build/outputs/apk/debug/app-debug.apk
(Note: The build configuration falls back to the default Android debug keystore if no custom keystore is present.)
Execute the local Robolectric/JUnit unit test suite:
./gradlew test
