Implement support for OASIS XLIFF 1.1 in KBabel

Synopsis

Localisation of open source (including KDE and Gnome) is in a majority of projects handled by the GNU Gettext library and the associated PO file format. The PO file format is a simple string table used by translators to translate the English sources to their native language. Several tools exists for editing PO files, and the most used (and most advanced) of these is KDE's KBabel.

In recent years, industry standards have been developed in the area of software localisation, including the OASIS XLIFF file format for storage and exchange of localisable resources in the localisation process. The philosophy behind XLIFF is to extract resources from native formats into a common standard localisation format (XLIFF), and merge the translated resources back into the native format when translation is complete. Filters and specifications for converting to and from XLIFF have been developed for a number of file types, including PO, HTML and DocBook. KBabel has very limited support for XLIFF, and this project aims to implement support for many of the rich features of XLIFF, including abstraction of inline codes, viewing/approval of translation suggestions, viewing of context information and the ability for translators to attach notes to translations.

Goals

  1. Contribute to making KBabel the best open source XLIFF localisation tool
  2. Expand KBabel's user base by implementing support for localisation industry standard file formats.

By implementing support for the industry standard XLIFF format in KBabel, the KDE project will have a fully fledged native XLIFF localisation tool. As we move towards and beyond KDE 4, we then have a stronger argument for considering adopting XLIFF in KDE's localisation process, with its inherent benefits:

  • Better handling of context information (by not including context as part of the source string)
  • Abstraction of inline codes such as XML tags and parameters
  • Identification and tagging of terms (better terminology management)
  • Easy adoption of new formats in the localisation process (all you need is a filter to/from xliff)
  • Inclusion of translation suggestions (possibility of future server based translation memory)
  • Allow translators / developers to add comments to translations.
  • Better change tracking (tracking of who translated what)
  • All the benefits of XML based processing

Project Details

The XLIFF file format is a very rich super-set of the PO format, and hence, some of the underlying data model in KBabel must be refactored, allowing support for features such as context info, translation suggestions, hierarchical data structures, inline codes, sub-segmentation, translator comments and other meta-data. The first step of this process will be (if not already done when starting) to port KBabel to Qt4.

After the initial porting to Qt4, XLIFF features will be added incrementally, starting with the most important ones first:

  • Honouring common attributes (such as fuzzy handling, translate yes/no)
  • Abstraction of inline codes (with some visual elements representing tags)
  • Display of context information
  • View / Add notes
  • view / approve translation suggestions
  • Workflow meta-data such as 'phase' information

I realize that there is also a looming usability issue here, as KBabel is becoming more and more bloated with features, some serious evaluation is also needed in considering how to best implement the rich features of XLIFF in a way that's user friendly to translators.

Project Schedule

June 24: Project Start (I finish exams June 23)
June 24- July 10: Discuss requirements / Design & port to QT4
July 10 - Sept 1: Incrementally implements XLIFF features in KBabel
Sept 1: Project deadline

Motivation

My main motivation is to make the localisation process more user friendly so that more potential translators can contribute. I see XLIFF as the long term solution to many of the challenges facing open source localisation, and the format provides a way of standardizing the localisation processes across open source projects.

I am also a big KDE-fan, and would like to get more hands-on experience in KDE/QT/C++ development - I want to contribute, and not just observe :)

[ Edit ]