Monday, August 14

Localization coordination for Debian #6

With the deadline approaching, it appears that my productivity is rising. Seems like the typical efficiency=1/days_left (and at T=0 my brain explodes).

Basically I'm happy with what I have for DDTP. It will need some testing to replace the current system. One thing that I would like to have is package priorities: this has some support in the old system. I am not sure how to approach this yet, but I'm sure I'll think of something. Anyway, this is not a priority and will probably be settled after the deadline.

Priorities for next (and last) week are to get the relational backend running and to write a guide to the API. I have already started work on the RDB backend. I am using SQLAlchemy as the wrapper. A nice side-effect is that SQLAlchemy supports SQLite, which means that getting the thing to run would be a snap, without requiring fancy configuration of MySQL or PostgreSQL. On the other hand, having these options allows better scalability as the database and the web server(s) can be separated. As for the guide, I am aiming for a style similar to library documentation on I expect no trouble here because I already have some experience with LATEX.

Last but not least, I have to remember to clean up quite a few leftover TODO and XXX markers in the things that I have. Most of them are benign, however.

Thursday, August 10

Localization coordination for Debian #5.5

I have been working on getting the DDTP to work with Pootle. Import from DDTP translation files works fine now (although it takes a while) as well as export to Translation-?? file format. I have also created a layer to split the translations up in groups by name, to avoid humongous multi-megabyte .po files.

More information and plans for next week coming up tomorrow.

Tuesday, August 1

Firefox tip-of-the-day

A small tip for Firefox: use mouse gestures for basic operations. They are provided by the mouse gestures extension. I am no big expert here, as I only use three gestures: go back (left), go forward (right) and close tab (down,right). Nevertheless, having these around is already very convenient, because they are so simple and so frequently needed. I usually do browsing with (surprise) my mouse and these gestures streamline the process because now I don't have to care about the toolbar (and the close tab buttton in particular) any more.

If you are only interested in the simple gestures, I found that it helps to disable diagonal gestures: in the extension's properties, Additional Settings tab, set diagonal tolerance to 0 percent. This will disable some advanced gestures but I never wanted those anyway, so it reduces the chance of my gesture being incorrectly recognized. I also disable the New window (down) gesture ("General" tab, "Edit gestures" button) because it would sometimes be activated instead of close tab when the "right" in my "down, right" motion were too small.

Mouse gestures, like anything, need some time to get used to, but after a while they require much less effort than seeking out a button. In a few days you will learn that very little motion is required for the gesture to be recognized. For other applications usually the keyboard is actively used, so keystroke shortcuts would be faster, but for web browsing in particular, mouse gestures fit the bill very well in my opinion.

By the way, Opera supports mouse gestures natively.

In other news, my work on Debian l10n project was mentioned on Debian Weekly News. I found it very funny that they linked to Worldforge, which is an open sorce MMORPG, instead of WordForge, the localisation project. Admittedly I had made this mistake myself previously, and unfortunately WordForge has a much lower profile than WorldForge. Oh well, real news publishers do this kind of stuff all the time :)

Localization coordination for Debian #5

There have not been updates for an extended period of time as I have taken a completely unplanned and unexpected holiday. Now I'm back on track.

Work I have accomplished since the last update:

  • updated TranslationUnit and the .po parser. In the end I decided that it's not worth making it too different from Pootle's pofile. Comments are now dealt with and the header is treated specially.
  • merging templates. I defined an interface for objects able to merge translation stores and provided a simple implementation. Pootle already has an implementation of this too, I'll try to encapsulate that as well.
  • help with move to Subversion for the Wordforge project. The Subversion repository is already operational at, although it's read-only at this moment.
  • some small shufflings in the API. Generally the defined interface are holding out fairly well new code, so only small modifications are needed.

Here's what I want to do next week:

  • Wire this thing up to DDTP. Should be easy, I just need to ask about a good way to fetch DDTP translations. Probably this will be a download-only demo in the beginning.
  • Same for debconf l10n templates.
  • Come up with a translation review and approval model. This is one of the cornerstones of the API and may be tricky to get right. I think that it is essential to have a sort of a 'diff' tool working at translation unit level (much like ordinary 'diff' works on text). To get usable diffs several copies of the template (upstream & local) should be stored. With this in place it shouldn't be hard to implement pushing of new DDTP / debconf translations upstream.
  • further updates to the API as flaws and missing features pop up.