Benkyou - A Japanese Language Learning Module for Drupal

vaelen's picture

I'm currently developing a language learning system for Japanese on top of Drupal. This is actually the fourth iteration of this same tool for me. (First in Java/SWT, then C#, then C++/QT, and now web based with Drupal.) However, the Drupal version will have many more features than my previous attempts (which were basically flashcard apps specialized to Japanese). The site will include vocabulary, grammar, and kanji (Japanese written characters) flashcards, but it will also do things like adjust the kanji shown on the page to fit how many kanji characters you have learned so far. I plan to give content creation privledges to Japanese teachers from the high school and university levels, as well as some other native speakers. The site will be geared more towards someone who is taking a Japanese language class in a traditional settingl, but it will also work for students who are not currently enrolled in a class. (Although an actual set of lessons is certainly lower on the priority list than flashcards, reviews, and quizzes of existing lesson materials.) Flashcards will be able to contain images, video, audio, part of speech info, and example sentences, as well as the word's written form (in a mix of kanji and kana that adjusts based on the user's list of known kanji characters), the word's pronunciation (written in kana), and the word's meaning (at first in English, but later I will add support for multi-lingual translations.)

I would be glad to hear any thoughts that the community has on my project, and if anyone is interested I could use some testers once I get a working demo up and running, which is still several weeks away at least since this is something I'm doing in my spare time.

Login to post comments

the way Drupal works

kvantomme's picture
kvantomme - Mon, 2007-12-17 07:21

Hi Andrew, probably you shouldn't be building a module for "Japanese language learning". The best way to go about this is to look around and make a mashup of existing modules to get you at 80% of your project and then build an extra module that does something extra fun that gets you the extra 20%.

Like most projects probably a good way to start would be some combination of taxonomy, CCK and views. Have a look at http://drupal.org/project/cck_flashcard .

If you still want to make a solution to rule them all, you can make an install profile.


Hi, Yeah, I thought about

vaelen's picture
vaelen - Fri, 2007-12-21 03:01

Hi,

Yeah, I thought about doing it that way, but I decided that it would make the system overly complicated. If I made each vocabulary entry a node, then started tacking cck fields onto it, the database complexity would quickly increase and I would have to do some major hacking of how the nodes are themed to produce the output I'm looking for. I would need to create cck field types with special formatters for the kanji and kana sections (which automatically adjust as the user learns more kanji), and I would need to theme the node output to turn certain cck fields on and off per the user's configuration options. I would have to write views integration code on top of that if I wanted to use views to display the nodes properly. Taxonomy would be nice, I admit, but again more than I need at the moment. On top of that, I would still need a table to tell me what vocabulary items each user is currently learning and how many times they've gotten each of those items correct. I don't want to duplicate the vocabulary, so then I would need to make a node for each xref with something like a user link cck field, a node link cck field, and an integer cck field. Although I see the potential of making everything a node and using a bunch of out-of-the-box modules to hack something into place, I just think that trying to use nodes for this data is really using the system in a way it wasn't intended to be used. A lot of the system would also be dependent on the database configuration (content types, etc). By the time I did all that work, I might as well have written the module from scratch.

On top of that, I already have a working version of the flashcard part of the system in C++ with a QT4 GUI on it, and a database schema that works there. I cleaned it up and reworked it a little for the web version, but the basic ideas were all the same. It only took me a short time to port that to drupal.

What I'm looking to other modules for is the social networking aspects that make drupal a fun platform to develop for. Stuff like buddylist, location, gmap, privatemsg, etc. Let people connect and discuss in forums, and blog about their progress. That sort of stuff drupal is well suited to out of the box. Plus, the forms API makes the job of writing editor screens a breeze.

Thanks for the insight and the tips. :)

  • Andrew

This looks like a complex

bohemicus's picture
bohemicus - Fri, 2007-12-21 01:32

This looks like a complex project that will need a number of modules. First, you need a module to create, maintain, display the language learning content. At the moment there are quiz, cck flashcard and a few more. I've been pushing for people to try to port TuiT which is my open source project specifically for language learning content but it might be overkill for you. Second, you will need a module to make it possible to interface teacher, student and content to get a learning workflow going. At the moment the gradebook module is the closest to what you need but I suspect it needs some work to interface properly with your content. (Again, TuiT had that worked out, quite well but there's a lot of work needed to get it to work on Drupal.)

Dominik Lukes
http://www.bohemica.com
http://tuit.glottalstart.com


As far as the flashcard part

vaelen's picture
vaelen - Fri, 2007-12-21 02:49

As far as the flashcard part goes, I've actually already got a working version of this in C++ with a QT GUI on it. I'm just porting it to a web environment. I don't really want to bend other modules to work for my purposes, but instead port my existing system to a cleaner web based implementation. (I'm trying to make it as Japanese specific as possible, rather than something more general.) For the social networking / teaching aspects on the other hand, that's definitely the sort of thing I'll be looking to other modules for. I hadn't considered any sort of grading suite on the site, but I'll take a look at gradebook and see what it can do. Thanks for the tips. :)