LaTrine(1) drill yourself in language vocabulary


latrine [options] [dictionary|path]


LaTrine is a curses-based Language Trainer. It takes a dictionary and asks you for a word or a phrase, and you try to give the correct translation. You can choose in what direction LaTrine shall ask, and the selection of the words or phrases will depend on how often you do not know the correct translation for the respective word. This is a usual way to drill yourself in foreign language vocabulary.

LaTrine provides UTF-8 support for non-ASCII characters, as well as (currently limited) right-to-left input and output, e.g. for Hebrew and Arabic. The program features several localizations. Screenshots can be found at LaTrine's upstream homepage

In addition to this program you need an appropriate dictionary. You may write your own word list, or you can install one from the Free Dictionaries Project at, providing dictionaries for about 50 language combinations, which should be compatible with LaTrine. Download and unpack them, and put the file into /usr/share/dictd/.


Unless there is a dict entry in the system-wide or user configuration file, a dictionary needs to be specified as non-option argument. See the FILES section below for further information.
Turn on debug mode, which provides additional error messages and status information, which will be appended to ~/.latrine/debug.log. Debug mode may slow down LaTrine considerably.
Choose the initial input direction: [>>] (0), [<>] (1), [><] (2), or [<<] (3). The direction can be switched with F4 while LaTrine is running.
Enable the entering of digraphs. Example: Press A <BSP> ' and the result will be Á. The following digraphs are implemented (list may be incomplete due to groff limitations):
Á       A'                      á       a'
Ä       A:                      Ä       a:
vC      C<                      vc      c<
vD      D<                      vd      d<
É       E'                      é       e'
Í       I'                      í       i'
'L      L'                      'l      l'
vL      L<                      vl      l<
Ñ       N?                      ñ       n?
vN      N<                      vn      n<
Ó       O'                      ó       o'
Ô       O>                      ô       o>
'R      R'                      'r      r'
vS      S<                      vs      s<
vT      T<                      vt      t<
Ú       U'                      ú       u'
Ý       Y'                      ý       y'
vZ      Z<                      vz      z<
¡       !I                      ¿       ?I
Overwrite stale lock files. Use this if LaTrine says that it's already running but it isn't.
Display a command line summary.
Compare case-insensitively when checking a translation.
Use the specified path as keymap file. The keymap file defines keyboard input conversion for the primary input field, see the section FILE FORMATS below.
The keymap file for the secondary input field.
The screen label for the input fields. --help displays the maximum length for each of them.
The number of phrases to hold in memory. LaTrine handles large dictionaries by loading only the max least-known words into the memory. When these get a higher hit rate the dictionary will be reloaded. Specify 0 to load the whole dictionary into the memory. --help displays the default value. See THE WORD SELECTION ALGORITHM section below for further information.
Decides, whether you will be asked for the translation of a LHS phrase (normal mode), or a RHS phrase (reversed mode), or both in mixed order. The F3 key will cycle through these settings while LaTrine is running.
After each input, the wordlist is kind of sorted using a special alogrithm. The next phrase is then selected by chance from the first max entries in this sorted list. --help displays the default value. max is less than or equal to a non-zero memory limit above. See THE WORD SELECTION ALGORITHM section below for further information.
Display copyright information and the program's and libraries' version numbers.


System-wide configuration, see the FILE FORMATS section below for further information.
User configuration.
Debug output.
Default location for dictionaries, only wordlist needs to be specified. If you want to use another file as dictionary, just specify its path; say ./foo if you mean foo instead of /usr/share/dictd/
The user's hit statistics (so-called wordlist files).
The wordlist lock files, containing the PID of the running LaTrineprocess.
Localization files. Contributions for other languages are appreciated. Find the current PO template file at


Configuration files
contain one long option per line, e.g. mode=mixed. Whitespace, empty lines, and lines beginning with a # will be ignored. In addition to the command line options there is a dict={dictionary|path} keyword, providing the task of the non-option command line argument. On the other hand, --force--help, and --version may not be used in configuration files.
are usually compressed, even if they do not need to be. They must be UTF-8 encoded, and have the following structure:
language 1 phrase
[up to 15 more lines, CR/LF will be replaced with ", "]
spaces or tabstops, language 2 phrase
[up to 15 more lines, CR/LF will be replaced with ", "]
empty line(s)
The order of the ", "-concatenated lines above is irrelevant when checking the answer. Language 1 phrases beginning with 00- will be ignored. Due to bad documentation of the dictd dictionary format, not all freedict dictionaries can be read. Suggestions, how to improve the parser, will be appreciated.
Keymap files
have the following structure:
[# comments are ignored]
one input character, tabstop, conversion character (or string)
To specify a # character, precede it with a backslash. To use the backslash itself, do the same, i.e. double it.


From the dictionary a list of limit least-known words is read into memory. This list is alternating sorted: three times by least-known, one time by earliest last access. From the first random words of the sorted list, one is picked by chance. If this is one of the last three (two, one) words asked, another one is picked by chance, unless random is not greater than three (two, one). Using the --debug switch you can follow the word selection.


The screen is messed up when resizing the terminal while using the F1 key.

Automatically reloading the dictionary is not yet implemented. This becomes necessary when the hit rates of the phrases in memory change, and other phrases (not in memory) should be asked instead. You may trigger it using the F2 key, which will save the current state and reload the dictionary thereafter. There is usually no need to do so, unless you set --limit very low.

Please send any bugs to <[email protected]>. Debian users are encouraged to use the Debian Bug Tracking System at


LaTrine was written by Martin A. Godisch <[email protected]>.

Computation of the MD5 message digest was written by Ulrich Drepper <[email protected]> and taken from the GNU C library.


Marco Colombo (Italian localization), Matt Dunford (bugfixes), Eyüp Hakan Duran (Turkish localization), Joe Hansen (Danish localization), Eugen Hoanca (Romanian localization), Patrik Johansson (Swedish localization), Michel Robitaille (French localization), Andhika Padmawan (Indonesian localization), Kevin Patrick Scannell (Irish localization), Benno Schulenberg (Dutch localization), Clytie Siddall (Vietnamese localization), Michał Trzebiatowski (Polish localization), Julie Vermeersch (Dutch localization), Ji ZhengYu (Chinese localization).