I decided to write it from scratch and not to extend KBabel (though I do re-use parts of its code) because there are too many things that are currently implemented in KBabel without appropriate KDE technology (things that didn't exist when KBabel was initially developed, for example: the KBabel implementation of find/replace takes ~2000 lines while i've done it in around 350 lines thanks to KFind[Dialog]. The undo system is also implemeted in a less-hacky way, using the Qt framework, as will be syntax highlighting).
Some highlights of the current version:
- loads ru/messages/kdevelop/kdevelop.po (a 1 MB file) in approximately 1 second, while KBabel does this in 9 seconds! (I think this is because KBabel calls msgfmt, but i'll implement such checks in the background via threads).
- uses only 20 MB of RAM after this file has been opened (KBabel with Qt 4 uses 50 MB, KBabel with Qt 3 uses 70-90 MB) - I didn't subtract shared memory (Qt and other libs) from these numbers.
- doesn't hang if you hold PgDown/PgUp/F3/... for a while (because CPU usage doesn't hit 100%, and indeed is less than 30% on my 1.8GHz processor).
Plans for the future include a context glossary (SQL-based and an on-the-fly one, by parsing a Google automatic translation of msgid), a Translation Manager that is optimized for live search (on entry change), and not for the batch one.
All these will be implemented using Qt[Sql] and KJob/ThreadWeaver. I will also consider implementing scripting using the Kross framework.
Also checkout the todo file. As I am new to KDE programming, I would welcome any comments/suggestions from more experienced developers.