I need something to help me with my Japanese vocab so I've been thinking of writing Text::Vocab which will take a word and all its possible translations and then, depending on a pluggable chooser algorithm, ask you to for translations of words.
(Random thought for the default chooser - questions should be statistically less likely to be asked the more right you get them)
It must be able to do 2 way 1-to-many mapping because you might have word which multiple things in the source language such as, say, 'mug'. In English this can mean "a recepticle to hold drinks in", "attack someone and steal stuff from them", "scrunch your face up" and "a gullible person". Of course you might also have two different words in the 'target' language meaning the same thing in the 'source' langauge - for example dokou and dochira both mean where in Japanese (dochira is more polite).
It should, of course, be able to deal with Unicode and should be able to take langauge packs which people could contribute (Beginners Japanese, Advanced Spanish etc etc). Whether these should be in XML, YAML or some custom format or something else entirely is definitely an important question.
I'd probably ship it with an example 'testing' cgi app that drops in somewhere, looks for a config file and then presents a web page that asks you a load of questions.
The other thing to think about is phrases since they're not as clear cut as single words.