french-deconjugator reads conjugated French verbs from its standard input and writes (to standard output) the verb's infinitive form, the mode (infinitive, indicative, conditional, subjunctive, imperative or participle), the tense (present, past, imperfect, future), the person (1, 2 or 3, while 0 is used for the present participle tense, and 4 and 5 are used in the past participle tense), and the number (singular or plural). These fields are separated by a comma and a space.
By convention, persons 4 and 5 are used in the past participle tense to indicate the gender: 4 means masculine (e.g., "aimé" or "aimés") and 5 means feminine (e.g., "aimée" or "aimées").
A single conjugated form can correspond to more than one mode, tense and person. In this case, each alternative is written on its own line.
In all cases, the end of the answer is marked by an empty line. If the word was unknown, only this empty line is written.
The command flushes its output buffer after finishing each answer. This allows the command to be easily called from another program through two pipes.
The command starts by loading its database from XML files (stored typically in /usr/share/verbiste). This takes some time, so it is a good idea to have the command answer many requests instead of running it for each request.
The verbiste library's source archive contains Perl and Java example programs that illustrate this technique.
This commands expects to read Latin-1 characters and writes Latin-1 characters. There must not be any leading or trailing white spaces on the lines read by the command.
$ echo -ne 'a\nplu\nété\n' | french-deconjugator avoir, indicative, present, 3, singular
plaire, participle, past, 0, singular pleuvoir, participle, past, 0, singular
être, participle, past, 0, singular