https://github.com/raydac/langtrainer
A small desktop application designed to support language learning.
https://github.com/raydac/langtrainer
desktop java swing-gui
Last synced: 29 days ago
JSON representation
A small desktop application designed to support language learning.
- Host: GitHub
- URL: https://github.com/raydac/langtrainer
- Owner: raydac
- License: gpl-3.0
- Created: 2026-04-05T07:20:44.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-06-05T08:55:26.000Z (about 1 month ago)
- Last Synced: 2026-06-05T09:10:12.184Z (about 1 month ago)
- Topics: desktop, java, swing-gui
- Language: Java
- Homepage:
- Size: 2.06 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.txt
- License: LICENSE
Awesome Lists containing this project
README

[](http://www.apache.org/licenses/LICENSE-2.0)
[](https://bell-sw.com/pages/downloads/)
[](https://www.arthursacresanimalsanctuary.org/donate)
# LangTrainer
LangTrainer is a small Java desktop application for practicing dialogs, words, and phrases in
foreign languages. It provides several training modes over JSON-based language resources, including
dialog practice, flying word games, crossword generation, phrase building with bricks, paired-bar
matching, and image association exercises.
The application is intended for offline personal language training. Lessons are stored as readable
JSON files, so new vocabularies, dialogs, phrase lists, and image resources can be added or edited
without a server. Bundled lessons can be supplemented by opening local JSON files or synchronizing
external lessons from the application.
## Features
- Dialog-based translation practice with tolerant checking for punctuation, case, and small typing mistakes.
- Fly game for timed word recall.
- Crossword mode for single-word vocabulary resources.
- Bricks mode for rebuilding phrases from shuffled word parts.
- Bars mode for matching paired words or sentences by dragging rows into alignment.
- Images mode for matching text labels to embedded pictures.
- Shared resource selector with bundled lessons, local JSON files, and external lesson synchronization.
- Built-in editor for language resource JSON files, including module filters, right-to-left language flags, input
equivalence rules, and embedded line images.
- Virtual keyboards and input equivalence rules for keyboard-friendly typing of accented or language-specific letters.
- Right-to-left support for compatible resources, including Hebrew-oriented typing and layout behavior.
## Application
The application is written in [Java](https://en.wikipedia.org/wiki/Java_%28programming_language%29) and
requires [Java 17+](https://bell-sw.com/pages/downloads/) or later to be installed on your computer. For convenience,
there are also build versions that come bundled with a compatible Java runtime, so you don't have to install Java
separately if you don’t want to.
| OS | Download link |
|------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
|  | __[Archive with JRE for Windows amd64](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer-app-1.1.0-windows-jdk-amd64.zip)__ |
|  | __[Archive without JRE for Windows](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer-app-1.1.0.exe)__ |
|  | __[Archive with JRE for macOS amd64](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer-app-1.1.0-macos-jdk-amd64.zip)__ |
|  | __[Archive with JRE for macOS arm64](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer-app-1.1.0-macos-jdk-aarch64.zip)__ |
|  | __[DMG package for macOS (no JRE)](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer_1.1.0.dmg)__ |
|  | __[Archive with JRE for Linux amd64](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer-app-1.1.0-linux-jdk-amd64.tar.gz)__ |
|  | __[AppImage for Linux amd64](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer-app-1.1.0-x86_64.AppImage)__ |
|  | __[Cross-platform JAR file](https://github.com/raydac/langtrainer/releases/download/1.1.0/langtrainer-app-1.1.0.jar)__ |
__[Full set of latest pre-built applications](https://github.com/raydac/langtrainer/releases/latest)__
## Resource format
Lessons use a compact JSON format with two language columns, optional module visibility rules, optional right-to-left
language flags, optional input equivalence rules, and optional embedded PNG/JPG/SVG images per line. See
[`langtrainer-app/docs/JSON_format.txt`](langtrainer-app/docs/JSON_format.txt) for the full format and module-specific
notes in [`langtrainer-app/docs`](langtrainer-app/docs).
## Build from source
This project is built with Maven and targets Java 17:
```bash
mvn -pl langtrainer-app -am package
```
To start the application from source:
```bash
mvn -pl langtrainer-app -am exec:java
```