Vocabulary Trainer
Displays or reads example sentences and their translations. Exercises request picking correct translations or building them from a bunch of given words. Voice exercises are based on your device's text-to-speech feature.
Runnable version at https://augustuskling.github.io/lingo/ which caches courses to work offline. Progress is stored in the browser's localStorage
only. No account required.
![](https://private-user-images.githubusercontent.com/599177/284409645-e4432013-921b-4500-978b-8445f9a0ac23.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NzIwNjEsIm5iZiI6MTcyMzg3MTc2MSwicGF0aCI6Ii81OTkxNzcvMjg0NDA5NjQ1LWU0NDMyMDEzLTkyMWItNDUwMC05NzhiLTg0NDVmOWEwYWMyMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxN1QwNTE2MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02M2E3Y2NlNTQ1OGU4ODc3YjhmN2YwODIxMDYyYzQwMzJkZGRhYmVhY2JhOGIwMmY2MjI5NDE0YWIyYmU5NjYzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.br18prcttnfIwXukPgJhQGCrb_KLseWqPxDK8br5o4w)
![](https://private-user-images.githubusercontent.com/599177/284410137-20426cf5-c753-40b5-af79-723547d69258.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NzIwNjEsIm5iZiI6MTcyMzg3MTc2MSwicGF0aCI6Ii81OTkxNzcvMjg0NDEwMTM3LTIwNDI2Y2Y1LWM3NTMtNDBiNS1hZjc5LTcyMzU0N2Q2OTI1OC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxN1QwNTE2MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01YTJjNzRlMDUwYjU0NmI5YWY5MWZmMWE2OTljOTlkYmRlMGRlOWNmYzVjNDhiNzhlNWYzOGM3MzliNTRiMTNmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.qdwVLFCWMucGKr1XXiCOZem-10HQSYz4REx3Zd2ffFA)
![](https://private-user-images.githubusercontent.com/599177/284410227-0d01e168-ae7a-49c6-b360-7b7af25dad9d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NzIwNjEsIm5iZiI6MTcyMzg3MTc2MSwicGF0aCI6Ii81OTkxNzcvMjg0NDEwMjI3LTBkMDFlMTY4LWFlN2EtNDljNi1iMzYwLTdiN2FmMjVkYWQ5ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxN1QwNTE2MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xZmRlOTZjMGNmMzE4ZDJiM2QyOGU3OWQwY2NlNzVkN2I4YTk3M2M0MzZmZmY2ZDczMmE4NDNmN2M1NDIzNjNiJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.7KUT86wUBDiWLNYUeVF5JmbzUBYpyhTpAaKUs_SIwqg)
![](https://private-user-images.githubusercontent.com/599177/284410584-e50046e8-f3fe-48ad-8682-ca888866a606.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjM4NzIwNjEsIm5iZiI6MTcyMzg3MTc2MSwicGF0aCI6Ii81OTkxNzcvMjg0NDEwNTg0LWU1MDA0NmU4LWYzZmUtNDhhZC04NjgyLWNhODg4ODY2YTYwNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwODE3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDgxN1QwNTE2MDFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT05YzA2Y2Y3ZDJhZGQzMmEyMzQ0OWFkMDEwYzBlMWI4ZjU4N2JlZTg3ZTI3NzY0ZjNmYzU0MGQ1NDkxNWQ1OGE4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.VIJQO5CRdBqsoG9-gxGeC5TVJAk3SiMcXA3n9f9ze_s)
Example sentences are imported from Tatoeba. Excercises can be grouped into thematic lessions by putting yml files in the lessons
folder.
You can find Tatoeba's sentenences and translations to various langages on https://tatoeba.org/en/downloads and integrate them using build-tatoeba-course.mjs
.
Run the course compiler to generate a course for a new language pair.
node build-tatoeba-course.mjs SOURCE_LANGUAGE_CODE TARGET_LANGUAGE_CODE
(replace SOURCE_LANGUAGE_CODE and TARGET_LANGUAGE_CODE with the respective ISO-639-3 language codes)
Then run yarn build
to create a static website containing the new course.
Exercises will only be shown for sentences that are linked as direct translations of each other. IPA transcription is generated using espeak-ng for target languages where a mapping of language to espeak-ng voice is known.
# Order of courses in course list
order: 5
title:
eng: "Kitchen"
deu: "Küche"
swe: Kök
description:
eng: "Cooking and ingredients"
deu: Kochen und Zutaten
# Sentences making up the lesson given by Tatoeba sentence ids in either source language, target language or English.
exercises:
- 310737
- 10136126
- 10207593
# Sentences making up the lesson given by Tatoeba tag name.
exerciseTags:
- Küche
- kitchen
- food
- fruit
- cooking
# Sentences making up the lesson given by Tatoeba list id.
lists:
- 171778
The course compiler ignores sentences from lessons if it cannot relate them to your source and target languages. Lessons with no remaining sentences are excluded.