Qt Word Trainer

GVoc is a simple word trainer written in C++/Qt.

Git repository

It was specifically designed for learning Chinese, because I don't need any more than that, at the moment. Modifying it to support other languages and word lists is trivial. By keeping it simple, GVoc has a neglegible startup time and can therefore be started anytime you want to study your foreign language.

Using GVoc

After loading the word lists, which are the Chinese word lists for the HSK level 1 and 2 exams, the words are shuffled and you will be confronted with a Chinese word along with its pinyin (phonetic alphabet for Chinese characters). The trainer will expect you to write the English translation. The word lists have a set of acceptable solutions, so for a word such as å (sì), acceptable solutions might be "4" or "four". The solution is case insensitive.

Using
Using

You can choose to switch to English, after which point you will be presented an English word to be translated to Chinese. You may either enter pinyin or Chinese characters. Special phonetics are ignored, such that you may enter "si" instead of "sì" when asked about "four".

English
English

After entering the correct translation, you get one point and the word will not be asked in the next round. If you make a mistake, the word will be asked for the next three rounds. If you don't know the answer, you can skip the question by requesting an answer using the Answer button or by hitting the return key without entering anything. The word is then marked as "skipped" and will be asked again, next time. Note that you can switch to English and back to get the solution, as well, if you want to cheat, but do note that this harms only you and nobody else (I have this much discipline, so I didn't bother protecting myself against cheating).

Doing
Doing

Some words also have a hint attached to them. You may click the Hint button at no cost.

Hints
Hints

There may also be more than one hint for a single word. If you still don't know the answer after the first hint, you may click the Hint button again. Hints are not random, so you can cycle through them.

Multiple
Multiple

When all words have been asked, a report will be displayed. This report will always be measure percentages with respect to the last cycle. Thus, the second cycle may have a dramatically worse score, because you will be asked the words you didn't know the first time.

Score
Score

About the implementation

Word and hint lists

In order to keep the implementation simple, GVoc does not use a configuration file. Instead, the application constructor contains an array of word list file names, currently at ["hsk1.txt", "hsk2.txt"]. The word lists have the following format:

# comments start with #
# Chinese word,         pinyin,        primary translation; secondary translations
家,                     jiÄ,           home
ä¸,                     shàng,         up; on; on top of
ä¸,                     xià,           down; under; below

The hints are stored in a single file called "hints.txt" with the following format:

# comments again start with #
# Chinese word, hint text, hint text in pinyin
欢è¿
,       欢è¿æ¥ä¸æµ·ã
,       huÄnyíng lái shànghÇi.
# You may add more hints to a single word by repeating the word:
欢è¿
,       欢è¿ä½ ä»¬æ¥å¾·å½ã
,       huÄnyíng nÇmen lái déguó.

The files are line- and comma-based. In the current implementation, that means that in the word lists, the Chinese word is the text until the first comma, the pinyin is the text until the second comma and the English translations are the text after the second comma and before a newline. The hints file is read analogously.

Mistakes and skipped words

A mistake will cause the word to be asked again for the next three cycles. A skipped word is asked once in the next round. I decided not to weigh words with many mistakes more heavily. I also decided not to delete known words from the list, because repetition is a good thing, even for words you do know. After all words have been correctly entered (some of them 3 times), the word list is shuffled and all words are asked again.