jLexis Feature List

Following you'll find a loose collection of the features which make jLexis unique. Some of these features are already implemented. Others are planned to be realized in the near future.

Already Available


  • Add language characteristics with plugins. Every language has its own specific characteristics which have to be paid attention to when learning a foreign language. jLexis allows it to add these characteristics to the application through the means of language plugins. These plugins provide specific vocabulary input forms and testing modes for the respective language constructs. That makes it possible to learn every possible and impossible language with jLexis, provided that a plugin has been written for this language.
  • Use the default plugin for languages lacking a corresponding plugin. A default language plugin shipped with jLexis can be used for every foreign language which lacks a specific language plugin. Using this plugin, jLexis behaves just as any other vocabulary trainer. That is you can enter simple term/translation pairs for these and.

Data Storage

  • Keeping vocabulary data in a database. All vocabulary data is stored in a relational database through a Hibernate persistence layer. In the standard configuration, a local file-based database (HSQLDB) is used. By this, you can work with jLexis out of the box without the need to install an extra database server.
  • Centralize your data This on the other hand allows you to keep your vocabulary data on a central server, making it possible for a wide range of users to access the same data. This makes it possible to bring jLexis to the web or to classrooms.
  • No restrictions on some exclusively supported languages. Vocabulary data is managed in a generic way. That is, at the lowest level vocabulary data is composed solely of an aggregation of key/value data pairs. Only a language plugin will give semantic meaning to this data. By this, there is no restriction in which way linguistic data can be stored or on the type of language you can learn with jLexis. It is even conceivable to learn Klingon or Sindarin with jLexis.

Entering Vocabulary

  • Learn more than one language at the same time. jLexis allows you to use more than one language in a learning unit. So, besides the main language you are learning you have the option to add translations for other languages to your learning unit. This will later make it possible to have quiz questions asked which don't necessarily include your mother tongue. This helps you build a richer mental map of the foreign languages you are learning. To see this in action, take a look at the screenshot showing a panel where both Swedish and English vocabulary data can be entered for a learner who is a German native speaker.
  • Enter IPA phonetics. For every vocabulary term you can provide the correct pronunciation by means of a phonetic transcription. A special text field provides very easy editing capability for this type of data without having to resort to the mouse for selecting IPA phonetic characters. Every language plugin can restrict the set of IPA characters available for this language so that superfluous IPA characters not needed for this particular language don't come into your way. Take a look at the screenshot to see how phonetics can be edited. On this screenshot you can see an option list with all IPA characters for the letter 'e' available for the Swedish language.
  • Use an ellipsis character as a replacement for word stems. Declensions of a term in a foreign language tend to be very similar. Most often, the set of declensions for some term shares the same prefix. Consider, for instance, the singular and plural of English nouns. Almost all English plurals are formed by adding an 's' to the singular. To make editing your vocabulary data easier and in order to allow automatic declension for regular terms, jLexis allows you to mark a word stem and replace it with a placeholder character. Just as is usual for dictionaries, you mark the stem of a word with the pipe symbol. Let's take the Swedish word for bicycle which is cykel as an example. To form the plural for this noun, you append the syllable -lar to the word stem cyk-, resulting in cyklar. In jLexis you would write the singular as cyk|el and the plural as --lar. The program can then resolve this to cykel and cyklar.
  • Add comments and usage example to each vocable. In order to add semantic information to vocabulary terms, you have the option to provide a comment and an example text for each term. You can choose to have this additional information displayed along with a quiz question when testing your vocabulary. This will help you to find the correct answer for terms which may have more than one correct translation (such as homonyms).
  • Specify the lexical category of a vocable (e. g. nouns, verbs, adjectives or phrasal verbs). When entering vocabulary data, you can select the lexical category of the term you are editing. Every such category has its own semantics and thus differing demands for an input form. For example, a verb needs special input fields for the verb's declension (e. g. I do, you do, he does etc.). An adjective must be entered together with its comparative and superlative (e. g. good, better, best), and so forth. This data can later be explicitely used for conducting vocabulary tests.

Testing Vocabulary

  • Perform multiple choice tests or tests without the need to enter text. A vocabulary test can be conducted in multiple ways. You can choose to have you asked multiple choice questions or you can choose to give your answers by typing in the queried translations. You can also choose not to enter any answers into the computer at all. You can instead decide to answer a quiz question aloud and then tell the computer whether or not your answer was correct after it has shown you the solution of the current question.
  • Allow for tolerant testing. Usually, a vocabulary term can have more than one meaning. E. g., the user can provide a term's translation together with a set of synonym or homonym translations. During the vocabulary testing, these additional data can be tested either strictly or tolerantly. That is, the user can decide whether she will have to provide all of the translations of a vocabulary term or only one of them.
    There's another important type of tolerance available for vocabulary testing. If you're answering a quiz question by typing the answer into a text field, once in a while it may happen that you miss the enter key in the heat of the battle when you're about to submit your answer. This results in characters adjacent to the enter key such as '\' or ']' (depending on your keyboard layout) to be appended to your answer. If you manage to hit such a key at the same time you hit the enter key, your answer including the extra character will be submitted and subsequently rejected as being incorrect. So, jLexis can be configured such that these erroneous characters are ignored in your answer, thus preventing your learning statistics from being biased.
  • Use specific quiz types defined in the language plugins. Every foreign language has its own demand for specialized testing modes which address the particularities of this language. For example, if you want to learn the Swedish or German language you will want to explicitly learn the plural forms of nouns. For Romanic languages it is indispensable to learn the different declensions of verbs. Since it is not possible to define one generic quiz mode that is able to cater to the needs of every possible language, language plugins for jLexis can define their own quiz modes as needed. The main application takes over the responsibility to pose language specific questions to the user, while the language plugin itself is responsible for evaluating the given answer. With this, implementors of language plugins only have to define how these specific questions have to be posed to the user and how the given answer needs to be evaluated. Conducting a quiz round itself remains the job of the main application.
    As a default, jLexis provides quiz modes which can generically be used for every possible language. This is the normal vocabulary testing which you would expect from every basic vocabulary trainer. Thus, implementing special quiz types is optional for language plugins.
  • Randomly mix in vocabulary from other language units. If you have created a learning unit and start learning this vocabulary data you will soon realize that you will memorize this data in the context of the corresponding learning unit. That is, you can better answer the quiz questions for this unit just because always the same set of vocabulary terms is tested conjointly over and over again. If you later want to translate one of the terms from a learning unit in some completely different context, you may have difficulties in doing so, since the context of the learning unit is not fresh in your mind. Therefore, jLexis provides the option to randomly mix in vocabulary terms from other learning units when you are testing your vocabulary. See the screenshot of the option panel for configuring this mix-in in the screenshot section.
  • Configure quiz rounds to meet your needs. There are a lot of options you can define for conducting a vocabulary quiz. You can define the ordering of the questions (random vs. the ordering from the learning unit). You can choose how often and when questions are repeated if you answered them wrong and what additional information is shown together with a quiz question. You can define how strict your answers are evaluated and so on.

To Be Implemented Next

  • Overhaul the user interface and convert jLexis into an Eclipse-based RCP program. At the moment, jLexis is implemented as a Java Swing application. This was good for prototyping, but in order to create a robust application built on a stable foundation, some other technology should be used. Eclipse RCP together with the OSGi platform provide an excellent basis for applications like jLexis. Many features come right out of the box with this platform saving a lot of time for the programmer.
  • Add internationalization. Iternationalization and localization support has not yet incorporated into the application.
  • Add an export/import function for vocabulary data. All vocabulary data is stored in a relational database. At the moment it is not possible to export and import this data. It is desirable to devise a generic XML-based export format which can be used to export and import vocabulary data independently from the language plugin used for the data.
  • Provide management facilities for vocabulary data. It should be easy to move vocabulary data between learning units, to copy, merge and edit it. Thus, some management facility should be added which goes beyond the current editing functionality for learning units.
  • Create user profiles in multiuser environments. jLexis can be used by a single user or by a group of users. Every user has an own profile used to manage her learning units and information about her learning progress. This profile will be used to save detailed statistics about how you performed during the quiz rounds. With this it will be possible for you to selectively concentrate on those parts of the vocabulary where you're still having difficulties. For example, jLexis could specifically query those vocabulary terms which you have answered wrong most oftenly in the past.

Planned for the Near Future

  • Add tolerance to the vocabulary testing by accepting correct answers even though they are given in the wrong context. More often than not, it happens that during a vocabulary test you are asked for the translation of some word which may have more than one valid translation (such as homonyms). Usually these translation alternatives are spread over several different vocabulary entries and learning units. Say, for example, jLexis asks you for the translation of the English word tear. Since you are not given any additional context for the requested translation, you answer with the correct translation for tear as for the liquid coming out of an eye (in German this would be Träne). Even though this translation is correct, jLexis could indicate an incorrect translation when the vocabulary term for tear, which is actually asked, contains the translation of tear for the meaning of to rip apart. Now, jLexis could be designed in such a way that each time the user gives a seemingly incorrect answer, all vocabulary terms in the database are searched for another vocabulary term correctly matching the question posed with the given answer. jLexis could then show a message that even though the given answer was correct, a different meaning was asked from the user. The user's answer would then not be wrongly evaluated as incorrect.
  • Make it easy to enter data for language specific character sets. When entering vocabulary data for foreign languages it should be easy to enter the data in their respective language specific character sets. This could be accomplished by automatically switching the keyboard layout when the keyboard focus enters a text field for a specific language. For example, if you learn Russian, the keyboard layout could switch to the Cyrillic alphabet when you are entering Russian translations for your vocabulary data.
  • Attach pronunciation audio files to vocabulary terms which may be located and downloaded automatically. It should be possible to add a pronunciation file to every vocabulary term so that vocabulary test questions could be posed by playing these audio files. A mechanism could be implemented which enables the application to automatically find such files on the web.
  • Add search functionality with a Lucene search container. The repository of vocabulary data should be completely searchable. Then jLexis could warn the user when she is adding a vocabulary term which does already exist in a different learning unit.
  • Make it possible to add binary data such as images to vocabulary terms. Currently, jLexis only supports textual vocabulary data. This should be extended in such a way, that it becomes possible to also add binary data to a vocabulary term. This is a precondition for adding audio files to vocabulary terms.
  • Make merging of vocabulary terms possible. As soon as jLexis provides the option to share vocabulary data between users, a mechanism must be provided to merge two instances of the same vocabulary term. This is useful, for example, if you have an own version of some vocabulary term in a learning unit and get a more detailed version of the same term by a friend. It must then be easy to merge both of these terms into one data record. Another case where this comes in handy is when you have started entering a vocabulary term and realize that you have selected the wrong grammatical type for this term. Instead of having to start over entering this term, it should be possible to move the already entered data into a new record with the correct type.
  • Provide an upgrade mechanism for language plugins. When language plugins evolve, new versions will become incompatible with older versions. The same will apply to the respective data model provided by each language plugin. Thus, if the user upgrades one of the installed language plugins, a facility must be available to upgrade the corresponding data as well without the risk of data loss.
  • Go mobile. jLexis should also be usable on a mobile phone where you can use the same vocabulary data as with the desktop application. Learning and testing your vocabulary should also be possible when on the road.
  • Add a Bug-Me mode. When running in this mode, jLexis is minimized on the desktop and stays in the background. After a preconfigured time interval has elapsed, jLexis will open a pop-up dialog displaying some randomly selected vocabulary term. It thus pushes into the foreground and grabs your attention when you're doing your computer work. You then have to close the pop-up by clicking a confirmation button. This feature can be used to recurringly bring your vocabulary to your mind.

Somewhere In Time...

The next logical step, when all of the above described features have been completely implemented and do fully work, is to bring jLexis to the web and create an open language learner's community based on it. The jLexis application should be the basis of this web community, i.e. it should be possible to learn and test your vocabulary in the browser. The community shall be open for every foreign language people want to learn. It should be a meeting place of native speakers and language learners helping language learners find tandem partners. Community members shall be able to share their vocabulary data, proofread the vocabulary data of others, and download vocabulary data provided by others. Furthermore, it shall be possible for native speakers to upload their own pronunciation audio files licensed under a free license, so that everyone can benefit from these. This platform shall then be a free resource for audio pronunciations.