Development
Translating software with Pootle
Pootle is Free/Open Source, web-based software, aimed at making the process of translation of other software simpler. As a typical translation team's workload increases with each new software release, it becomes more and more important to have a smooth workflow, not only for managing the translations, but also for managing the translators as well. Simultaneously, to ensure that translators from all kinds of backgrounds are able to participate, the entire process needs to be kept as accessible and easy as possible. Pootle's goal is to make this a reality.
Pootle is written in Python and is used by FOSS projects such as OpenOffice.org, One Laptop per Child/Sugar Labs, LXDE, Sahana, GNU Mailman, etc. A list of live Pootle installations is maintained on the Pootle wiki. In its backend, Pootle utilizes the Translate Toolkit, which provides an API for a comprehensive set of localization related functions, along with support for multiple translation file formats such as PO, XLIFF, QT .ts, CSV, and Mozilla .properties. Using this backend, Pootle offers a web-based interface for managing translators, adding, modifying and suggesting translations, and support for connecting to a number of version control systems (CVS, SVN, Git, Mercurial, etc).
In a typical Pootle installation the server configuration points to the po/ subdirectory of a project (or an appropriate symlink). The project may be a checkout/clone of a remote repository or standalone. In the former case the language team lead (or other authorized team members) can commit (and push) translations to the remote, upstream repository via the web interface. If the PO files are not part of a repository, the integration step is usually carried out manually. All the PO files (or equivalent translation files) in the po/ directory are exposed via the web UI, and the messages in the files are presented as distinct units to the translators, who can translate them (or edit the translations) using the browser.
Pootle's web-based translation interface lowers the barrier to entry considerably, this is crucial for ensuring success for translation teams (especially those with limited resources and volunteers). Translators often come from non-technical backgrounds, so the web-interface, by abstracting away the underlying complexity of multiple version control systems and the gettext toolchain, makes their work considerably easier.
The web-based interface, despite simplifying things with its ease of use can sometimes exclude people from participating. One barrier is that it relies on continuous Internet access, which may be non-existent or prohibitively expensive in many regions of the world. Fortunately, Pootle provides a feature which allows translators to download PO files, translate offline, and re-upload the files.
This "offline-translation" feature can be highly useful for translation "sprints", where a group of volunteers gather together, translate a set of downloaded PO files using offline tools such as Poedit or Virtaal, then upload back the files to the Pootle server.
However, the overall ease of use brings up yet another potential problem. With a large number of translators from various backgrounds participating in the translation process, quality issues invariably crop up. Such issues can be divided into two broad categories:
-
Mistranslations: These can be either plain "wrong" translations, or errors like incorrectly typed format placeholders or an incorrect number of escape sequences (e.g. '\n'). This can be partially addressed by having access control rules in place. Pootle has the provision for different levels of access, where a user can be assigned various rights on the basis of the user's experience level. Using this feature, a user can be allowed to perform any combination of tasks such as translating, suggesting possible translations, reviewing suggested translations, committing translations, etc.
To ensure that the quality level of a new contributor is up to the mark, many language team coordinators choose to set the default access level to "suggest". When the initial set of suggestions are found to be satisfactory, the access level can be increased to "translate", "review", or even higher.
Another way of ensuring high quality translation is to use the built-in "checks" feature offered by the software. Currently there is a set of 47 checks in Pootle which test for common errors in translations. Some of these tests, like the capitalization check are language and writing system specific. But others, like the check for translated file paths and function names (normally file paths or function names are kept untranslated) are applicable universally and can be quite useful.
For translators not sufficiently familiar with English (messages to be translated are almost invariably in English), the ability to view reference translations in a third language often helps. Support for this viewing of an alternate language was added in the last stable release of Pootle (version 1.2). For example, this feature was found to be very useful in OLPC's South American deployments, where translators for languages like Aymara and Quechua wanted to see Spanish translations while translating, to better understand the meaning of the original English strings.
A combination of the above three features, if used properly, can reduce mistranslations to a large extent.
-
Inconsistency: In this commonly occurring problem, two or more translators may translate the same term differently. For example, for a certain term, one translator might want to keep an English transliteration, while another may want to use the literal meaning of the term. This almost certainly confuses the end user, and ensuring consistency is important. To address this problem, Pootle provides a glossary, or terminology feature, where a single set of translations for commonly used terms can be stored. During translation, the appropriate entry from this set is provided as a suggestion whenever the translator comes across a message containing a term from the glossary. This particular feature can also be useful if there is government or language-body sanctioned terminology for computer-related vocabulary.
Though deciding on and creating a glossary of terms manually can be difficult for projects with a large string count, the Translate Toolkit provides a command line tool called poterminology to automatically produce a list of commonly occurring terms from a set of PO or POT (PO Template) files.
With the features outlined above, Pootle can make the life of translators in any FOSS project considerably easier. However, from the author's experience at OLPC/Sugar Labs, there can been a few problems along the road as well. Any project thinking of adopting Pootle should ideally factor in these issues in before taking the plunge:
-
Speed issues: Pootle can be quite slow during certain operations involving large PO files (as an example, the largest of the PO files served by the OLPC/Sugar Labs Pootle installation has around 4400 strings). These operations that can make Pootle utilize 100% CPU on the hosting server for a significant amount of time. Operations such as merging two large PO files (which usually happens during uploads), updating a set of PO files from the corresponding set of updated reference POT files, or searching through large files for untranslated strings, are examples of potentially lengthy tasks.
Newer versions of Pootle (and the Translate Toolkit) have seen the introduction of sqlite-based databases for storing translation statistics and the use of Lucene/Xapian based indexing of PO files. These changes have significantly improved the search performance.
-
Communication: Pootle itself does not provide for any mode of communication within teams or between site-administrators and teams. This can be addressed partially by using a mailing list for each translation team, as well as a special "all-hands" mailing list for general announcements and reminders. However, even if mailing lists are used, it becomes increasingly difficult to get in touch and coordinate with individual translators and team leads as the translation community scales up. This can become an especially pressing issue toward the end of a release cycle; often translation leads need to be reminded individually about committing the work they have completed so far.
On the other hand, the Pootle developers seem to be aware of the urgency of the issue, and there is currently a page in the wiki outlining the various use-cases for this feature. Some of the required features have already been implemented in Pootle's SVN trunk.
-
Error checking: The error checking feature in Pootle needs to invoked manually (via the "checks" system mentioned before). This means that there is always a chance that wrongly formatted PO files may get introduced into the software's source tree, causing the build to break in some cases. Of course, this is not an issue if the language team lead always ensures that at least the the critical "checks" pass for the PO file before a commit is made.
Despite the above weaknesses, from an overall perspective Pootle can be a useful component of any FOSS project's localization arm. In fact, it is not only the translators who benefit from the features that Pootle offers, developers only have to grant repository access to one user account (the one used by Pootle) to take care of all translations. The process of providing the requisite repository access to each translator or language team has been a major bottleneck for quite a few FOSS projects in the past.
As of August 2009, Pootle has been undergoing significant changes in both code and visual design. Along with a switch to the Django web framework, the user interface has changed radically. Now, overall statistics for each project and language are viewable from the first page and UI changes are visible in the individual project/language pages. Among the other user-visible changes that are supposed to ship with Pootle 1.3, notable features include support for multiple alternate languages and initial implementation of intra-team communication methods. Also, with the shift to Django, which is much more popular compared to the older jToolkit framework, it should become easier for external developers to extend and customize Pootle.
The code for Pootle 1.3 (pre-release) can be downloaded from the SVN repository of the project. It is pretty much usable in its current form, though probably not recommended for production use. However, the project does need more help with testing, and reports about any bugs in the latest version from SVN are welcome.
With the impending release of Pootle 1.3, along with the fast pace of growth of other similar tools (Transifex, as well as the recently open-sourced Rosetta), things certainly do look bright for FOSS translation tools. In the next few months, we should be able to see significant improvements in the way Open Source translation is done, and through all these changes, the general translation workflow for FOSS will be greatly improved.
System Applications
Database Software
Firebird 2.5 Beta 2 kits released
Version 2.5 Beta 2 of the Firebird DBMS has been announced. "The Firebird Team is pleased to release the second Beta of the new Firebird 2.5 version for field-testing. 32-bit and 64-bit builds for Linux, Windows and MacOSX Intel are available."
PostgreSQL Weekly News
The August 9, 2009 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.SQLite release 3.6.17 released
Version 3.6.17 of the SQLite DBMS has been announced. "Changes associated with this release include the following: * Expose the sqlite3_strnicmp() interface for use by extensions and applications. * Remove the restriction on virtual tables and shared cache mode. Virtual tables and shared cache can now be used at the same time. * Many code simplifications and obscure bug fixes in support of providing 100% branch test coverage."
SQLObject 0.11.0 released
Version 0.11.0 of SQLObject has been announced, it adds a number of new capabilities. "SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, Firebird, Sybase, MSSQL and MaxDB (also known as SAPDB)."
Interoperability
Samba 3.0.36 maintenance release available
Maintenance release 3.0.36 of Samba has been announced. "This is the latest bug fix release for Samba 3.0 series." Also, the first edition of the Samba Team Blog has been published.
Web Site Development
Apache HTTP Server 2.2.13 released
Version 2.2.13 of Apache has been announced. "This version of Apache is principally a security and bug fix release. Notably, this version bundles the APR Library version 1.3.8 and APR Utility Library version 1.3.9, which address a security concern which may be triggered by some third party modules. We consider this release to be the best version of Apache available, and encourage users of all prior versions to upgrade."
Apache ODE 1.3.3 announced
Version 1.3.3 of Apache ODE has been announced. "I'm pleased to announce the release of ODE 1.3.3, a security release of Apache ODE. It fixes a vulnerability in the process deployment that allowed, using a forged message, to create, overwrite or delete files on the server file system. See the full vulnerability announcement below. Apache ODE is a WS-BPEL compliant web service orchestration engine. It organizes web services calls following a process description written in the BPEL XML grammar. Another way to describe it would be a web-service capable workflow engine."
Desktop Applications
Data Visualization
matplotlib 0.99 released
Version 0.99 of matplotlib, a data visualization package, is out with numerous bug fixes. See the CHANGELOG file for details.
Desktop Environments
GNOME Software Announcements
The following new GNOME software has been announced this week:- Accerciser 1.7.90 (translation work)
- atk 1.27.90 (translation work)
- ccss 0.5 (new features)
- Cheese 2.27.90 (new features, code cleanup and translation work)
- Clutter 1.0 (code branch)
- Deskbar-Applet 2.27.90 (translation work)
- Evince 2.27.90 (bug fixes and translation work)
- F-Spot 0.6 (unspecified)
- GCalctool 5.27.90 (bug fixes, documentation and translation work)
- GNOME Commander 1.2.8.1 (bug fixes)
- GNOME DVB Daemon 0.1.8.1 (new features and bug fixes)
- gnome-keyring 2.27.90 (bug fixes and translation work)
- GOK 2.27.90 (bug fixes and translation work)
- GParted 0.4.6 (bug fixes and translation work)
- gtk-css-engine 0.3.1 (new features)
- Java ATK Wrapper 0.27.6 (bug fix)
- libchamplain 0.3.90 (bug fix)
- moserial 2.27.4 (bug fixes, documentation and translation work)
- mousetweaks 2.27.90 (translation work)
- Nautilus-Actions 1.12.0 (new features, bug fixes and translation work)
- Orca 2.27.90 (bug fixes and translation work)
- PyClutter 0.9.2 (new features)
- PyGobject 2.19.0 (new features and bug fixes)
- Sabayon 2.27.0 (new features, bug fixes and translation work)
- seahorse 2.27.90 (bug fixes, documentation and translation work)
- Tangerine 0.3.2 (bug fixes)
KDE Software Announcements
The following new KDE software has been announced this week:- 2ManDVD 0.9.1 (new features and bug fixes)
- 2ManDVD 0.9.2 (bug fixes)
- 2ManDVD 0.9.3 (bug fixes and translation work)
- Choqok 0.6.6 (new features and bug fixes)
- Electronic Business Assistant 1.0.0.1 (unspecified)
- Frescobaldi 0.7.13 (bug fixes and translation work)
- KDevelop 3.5.5 (new features)
- KMidimon 0.7.1 (new features and bug fixes)
- Konversation 1.2-alpha6 (bug fixes)
- KTorrent 3.2.3 and 3.3beta1 (new features and bug fixes)
- ktv 0.1 (initial release)
- 'Q' DVD-Author 1.11.0 (new features and bug fixes)
- QComicBook 0.4.1 (bug fixes and code cleanup)
- qt gui for amule 0.1 (initial mockup release)
- Simple Root Actions Menu 2.2.0 (new feature and translation work)
- Skanlite 4.3 (unspecified)
Xorg Software Announcements
The following new Xorg software has been announced this week:- font-util 1.0.2 (bug fixes and documentation work)
- inputproto 1.9.99.901 (code cleanup and documentation work)
- libSM 1.1.1 (bug fixes, code cleanup and documentation work)
- pixman 0.15.20 (new feature and bug fixes)
- xextproto 7.1.0 (code cleanup)
- xf86-input-evdev 2.2.4 (bug fix)
- xf86-input-vmmouse 12.6.5 (bug fixes and code cleanup)
- xrandr 1.3.1 (bug fixes)
Desktop Publishing
Scribus 1.3.5 released
Version 1.3.5 of the Scribus desktop publishing application has been announced. "This release is a major development version on the road to milestone 1.4, which will be based on 1.3.5. Following many testing cycles, the Scribus Team considers this version to be fairly stable and ready for many real-world use cases."
Encryption Software
gnupg 0.2.1 released
Version 0.2.1 of gnupg has been announced, it includes minor bug-fixes. "The gnupg module allows Python programs to make use of the functionality provided by the Gnu Privacy Guard (abbreviated GPG or GnuPG). Using this module, Python programs can encrypt and decrypt data, digitally sign documents and verify digital signatures, manage (generate, list and delete) encryption keys, using proven Public Key Infrastructure (PKI) encryption technology based on OpenPGP."
Interoperability
Wine 1.1.27 announced
Version 1.1.27 of Wine has been announced. Changes include: "- New version of the Gecko engine. - New GSM 06.10 codec support. - Improved support for the disk volume APIs. - Support for XShm pixmaps for better performance. - Various bug fixes."
Multimedia
Moovida Media Center 1.0.6 released
Version 1.0.6 of Moovida Media Center has been announced. "This new version fixes many important bugs (see attached release notes) among which crashes on windows (reduced by 35%) and improves the overall performance (the UI is twice as fluid and Moovida uses 10MB less memory)."
Office Applications
Roundup Issue Tracker 1.4.9 released
Version 1.4.9 of Roundup Issue Tracker has been announced. "I'm proud to release version 1.4.9 of Roundup which fixes some bugs".
Office Suites
OpenOffice.org Newsletter
The July, 2009 edition of the OpenOffice.org Newsletter is out with the latest OO.o office suite articles and events.
Digital Photography
digiKam digest (KDEDot)
The August 8, 2009 edition of the digiKam digest has been announced. "This week we saw: fixing of Exif rotation flags; new layout of RemoveRedEyes KIPI plugin; new widget for lists of images for KIPI plugins; refactoring of ICC code for cleaner code-base, preparation for general bug fixing and easier maintenance in future. More screenshots for newest KIPI plugin - Local contrast plugin."
Miscellaneous
New releases of Mozilla Lightning and SOGo
Version 1.0.4 of SOGo and version0.9.6 of Mozilla Lightning "Inverse Edition" have been announced. "SOGo provides a rich AJAX-based Web interface and supports multiple native clients through the use of standard protocols such as CalDAV, CardDAV and GroupDAV. It features a very tight integration with Mozilla Thunderbird and Lightning and enable mobile devices synchronization through the use of the Funambol middleware. Version 1.0.4 provides new features such as Apple iPhone OS 3 support, better Apple iCal 3 support and memcached support for high-scalability. Moreover, Inverse releases Lightning "Inverse Edition" v0.9.6. This is a maintenance release of Mozilla Lightning..."
Languages and Tools
C
GCC 4.3.4 released
Version 4.3.4 of GCC has been announced. "GCC 4.3.4 is a bug-fix release containing fixes for regressions and serious bugs in GCC 4.3.3."
Perl
"Useful and usable" Perl 6 release coming in April
Patrick Michaud, the Rakudo Perl 6 "pumpking," has announced that a usable version of Perl 6 is coming in April, even if the language will not be "finished" by then. "To me, one good answer is to start making releases of Perl 6 that may not implement the entire Perl 6 specification, but that application writers will feel comfortable enough to start using in their projects. I've started to call these 'useful releases' or 'usable releases'. While it might not have every feature described in the Perl 6 synopses, enough features will be present that can make it a reasonable choice for application programs."
Perl 5.10.1 RC1 released (use Perl)
Version 5.10.1 RC1 of Perl has been announced. "This is the first maintenance release of the 5.10 series; it provides numerous bug fixes, improvements and core module updates from CPAN. Read the full list of changes in the perldelta document."
Test-Run 0.0120 released
Version 0.0120 of Test-Run has been announced, it includes some code rewriting. "Test-Run is an improved test harness for TAP based test streams. Originally forked from Test-Harness-2.x, it has been heavily modularised and extended, and was ported to use TAP-Parser. It has been split into a front-end, a back- end, a prove-like script-in-a-module, all with several OOP classes, and has several optional plugins on CPAN for such things as colouring the output, using alternate interpreters for running the TAP scripts and trimming the displayed filenames. More plugins can be written."
Python
CodeInvestigator 0.14.0 announced
Version 0.14.0 of CodeInvestigator, a tracing tool for Python, has been announced. "Changes: Unicode characters. They are handled better. Performance changes: The database is written more efficiently, so that recording takes less time. Performance tip: deleting ALL runs at the same time is fastest; I then initialize the database."
Distribute 0.6 released
Version 0.6 of Distribute has been announced. "Distribute is a friendly fork of the Setuptools project." Click below for change details.
M2Crypto 0.20 released
Version 0.20 of M2Crypto, a Python wrapper for OpenSSL, has been announced. "I am please to announce the M2Crypto 0.20 release, which was in development for over nine months. Over 30 bugs fixed by more than ten people."
python-utmp 0.8 released
Version 0.8 of python-utmp has been announced, the main change is Python 3 support. "python-utmp provides 3 modules to access utmp and wtmp records: * utmpaccess is lowlevel module written in C, wrapping/emulating glibc functions * UTMPCONST provides useful constants * utmp is module build on top of utmpaccess module, providing object oriented interface."
Python-URL! - weekly Python news and links
The August 6, 2009 edition of the Python-URL! is online with a new collection of Python article links.
Tcl/Tk
Tcl-URL! - weekly Tcl news and links
The August 6, 2009 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.
Test Suites
oejskit 0.8.6 announced
Version 0.8.6 of oejskit has been announced, it includes py.test 1.0 compatibility fixes. "jskit contains infrastructure and in particular a py.test plugin to enable running unit tests for JavaScript code inside browsers. The plugin requires py.test 1.0".
Page editor: Forrest Cook
Next page:
Linux in the news>>
