IDIOMATOR is a compact, all-in-one language learning tool designed for efficient vocabulary and conjugation practice. Whether you're a language learner or a developer looking to contribute, IDIOMATOR offers an intuitive interface with powerful customization options.
- Three Learning Modes: Choose how words are presented
- Smart Feedback System: Three ways to respond to each word
- Verb Conjugation Practice: Special mode for mastering verb forms
- Progress Tracking: Real-time statistics to monitor improvement
- Phonetic Transcriptions: Learn proper pronunciation
- Visual Learning: Icons represent word categories
- Responsive Design: Works perfectly on desktop and mobile
- Simple File-Based Structure: Easy to add new languages and words
- Clean Architecture: Pure HTML/CSS/JavaScript, no frameworks required
- Open Format: JSON files that are human-readable and editable
- GitHub Pages Ready: Deploy with a single push
- Extensible Design: Easy to add features or customize
- Visit: https://fjvico.github.io/idiomator/
- Choose Languages: Select what you want to learn and your reference language
- Start Learning: Use the three response options to practice
- Track Progress: Watch your accuracy improve over time
# Clone and run locally
git clone https://github.com/fjvico/idiomator.git
cd idiomator
python3 -m http.server 8000
# Open http://localhost:8000idiomator/
├── index.html # Main application file
├── data/
│ └── concept.json # Concepts with icons and word types
├── languages/
│ ├── en.json # English vocabulary
│ ├── es.json # Spanish vocabulary
│ └── ka.json # Georgian vocabulary
└── README.md
- Language to Learn: The language you're studying
- Reference Language: Your known language for reference
- Target → Reference: Word shown in language you're learning, guess in your language
- Reference → Target: Word shown in your language, guess in new language
- Random Mode: Mixes both approaches for variety
Each word appears with:
- Icon: Visual representation of the word type
- Type: Noun, verb, or adjective
- Phonetic: Pronunciation guide
- Three Response Options:
- Type & Check: Type your guess and click "Send"
- Reveal Answer: Click "Tell the Answer" to see it immediately
- Skip & Count: Click "OK, Next..." (counts as correct, shows answer briefly)
When verbs appear:
- Click "Conjugate Verb" to enter conjugation practice
- Practice specific tense/person combinations
- Click "Stop Conjugation" to return to normal practice
- Conjugation forms appear as button-like tags below the word
- Correct/Total: See how many you've answered correctly
- Accuracy: Percentage of correct answers
- All statistics update in real-time
- Create
languages/xx.json(replacexxwith language code) - Format: One JSON object per line (NDJSON format)
- Each line must contain at least
wordandphoneticfields
{"word":"room","phonetic":"/ruːm/"}
{"word":"eat","phonetic":"/iːt/","forms":{"present":{"1sg":"eat","2sg":"eat","3sg":"eats"},"past":{"*":"ate"}}}For verbs, use the forms object. You can specify forms efficiently:
Different forms for each person:
{"word":"eat","forms":{"present":{"1sg":"eat","2sg":"eat","3sg":"eats","1pl":"eat","2pl":"eat","3pl":"eat"},"past":{"*":"ate"}}}Same form for all persons (optimized):
{"word":"can","forms":{"present":{"*":"can"}}}Supported:
- Tenses:
present,past, etc. - Persons:
1sg,2sg,3sg,1pl,2pl,3pl - Wildcard:
"*"for forms identical across all persons - Optional:
nonFiniteforms (infinitives, participles)
- Edit
data/concept.json - Add objects with
icon(emoji) andtype(noun/verb/adjective) - Ensure each language file has a corresponding entry at the same position
[
{"icon": "🚪", "type": "noun"},
{"icon": "🍽️", "type": "verb"},
{"icon": "⚫", "type": "adjective"}
]- Frontend: Pure HTML5, CSS3, JavaScript (ES6+)
- No Dependencies: No frameworks or libraries required
- Data Storage: External JSON files, no database needed
- Deployment: Static files, compatible with any web server
- State Management: Centralized app state object
- Dynamic UI: All interface updates handled via DOM manipulation
- Error Handling: Graceful fallbacks for missing data
- Responsive CSS: Grid and Flexbox layouts
- Progressive Enhancement: Works even without external data
- Clone the repository
- Edit language files or add new ones
- Test locally with a web server
- Commit and push changes
- GitHub Pages automatically deploys
- Add new word types by extending the concepts file
- Support additional tenses in verb conjugations
- Implement user accounts (advanced)
- Add audio pronunciations
- Create themed word packs
- Active Recall: Forces memory retrieval before showing answers
- Spaced Repetition: Random word selection mimics spaced learning
- Multiple Modalities: Visual, textual, and phonetic learning
- Contextual Learning: Words presented with grammatical context
- Self-Paced: Learners control speed and difficulty
- Vocabulary Sets: Create themed word lists
- Verb Drills: Focus on conjugation patterns
- Pronunciation Practice: Phonetic transcriptions guide speaking
- Progress Monitoring: Track student improvement over time
We welcome contributions from both language experts and developers:
- Add Vocabulary: Contribute word lists for new languages
- Improve Transcriptions: Add or correct phonetic transcriptions
- Create Themes: Develop specialized vocabulary sets (travel, business, etc.)
- Verify Accuracy: Check existing language files for errors
- Fix Bugs: Report or fix issues
- Add Features: Implement new learning modes or tools
- Improve UI: Enhance the user interface
- Optimize Performance: Make the app faster or more efficient
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - See LICENSE file for details. You are free to use, modify, and distribute this software.
- Language Data: Contributions from language experts worldwide
- Icons: Unicode emoji for visual representation
- Phonetics: IPA transcriptions for accurate pronunciation
- Inspiration: Based on principles from spaced repetition systems like Anki
- Community: All contributors and users who help improve IDIOMATOR
- Can't load language files: Ensure files are in correct NDJSON format
- Missing words: Check that concept count matches vocabulary entries
- CORS errors: Run with a local server, not file:// protocol
- Layout issues: Clear browser cache or check console for errors
- GitHub Issues: Report bugs or request features
- Documentation: Check this README and code comments
- Community: Share experiences and tips with other users