Translate extension supports multiple file formats. The formats have been developed "as needed" basis, and many formats are not yet supported or the support is incomplete. In this project the aim would be to make existing file formats (for example Android xml) more robust to meet the following properties:
- the code does not crash on unexpected input,
- there is a validator for the file format,
- the code can handle the full file format specification,
- the code is secure (does not execute any code in the files nor have known exploits).
In addition new file formats can be implemented: in particular Apache Cocoon (T58276) and AndroidXml string arrays have interest and patches to work on, but we'd also like TMX, for example. Adding new formats is a good chance to learn how to write parsers and generators with simple data but complicated file formats. For some formats, it might be possible to take advantage of existing PHP libraries for parsing and file generation. (More example formats other platforms support: OpenOffice.org SDF/GSI, Desktop, Joomla INI, Magento CSV, Maker Interchange Format (MIF), .plist, Qt Linguist (TS), Subtitle formats, Windows .rc, Windows resource (.resx), HTML/XHTML, Mac OS X strings, WordFast TXT, ical.)
This project paves the way for future improvements, like automatic file format detection, support for more software projects and extension of the ability to add files for translation by normal users via a web interface.
- Skills: PHP, XML, aware how to write robust and secure PHP code
- Suggested micro-task: submit a patch for one of the bugs linked above; then get it merged, or get an i18n bug fixed (see the lists of open tickets for interface messages that need rewording under "Blocked by" and open Language Engineering bugs); then feel free to contact the mentors about this project.
At some point in time you'll need to set up a Translate wiki, familiarise yourself with message group configuration and play with some l10n files borrowing from translatewiki.net system (all available in its repository).
- Possible mentors: Niklas Laxström, Federico Leva, Siebrand Mazeland