August 12, 2009
This article was contributed by Sayamindu Dasgupta
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.
Comments (10 posted)
System Applications
Database Software
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."
Comments (none posted)
The August 9, 2009 edition of the PostgreSQL Weekly News
is online with the latest PostgreSQL DBMS articles and resources.
Full Story (comments: none)
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."
Comments (none posted)
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)."
Full Story (comments: none)
Interoperability
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.
Comments (none posted)
Web Site Development
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."
Full Story (comments: none)
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."
Full Story (comments: none)
Desktop Applications
Data Visualization
Version 0.99 of
matplotlib,
a data visualization package, is out with numerous bug fixes. See the
CHANGELOG
file for details.
Comments (none posted)
Desktop Environments
The following new GNOME software has been announced this week:
You can find more new GNOME software releases at
gnomefiles.org.
Comments (none posted)
The following new KDE software has been announced this week:
You can find more new KDE software releases at
kde-apps.org.
Comments (none posted)
The following new Xorg software has been announced this week:
More information can be found on the
X.Org Foundation wiki.
Comments (none posted)
Desktop Publishing
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."
Comments (none posted)
Encryption Software
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."
Full Story (comments: none)
Interoperability
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."
Comments (none posted)
Multimedia
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)."
Full Story (comments: none)
Office Applications
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".
Full Story (comments: none)
Office Suites
The July, 2009 edition of the OpenOffice.org Newsletter
is out with the latest OO.o office suite articles and events.
Full Story (comments: none)
Digital Photography
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."
Comments (none posted)
Miscellaneous
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..."
Full Story (comments: none)
Languages and Tools
C
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."
Full Story (comments: none)
Perl
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."
Comments (21 posted)
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."
Comments (none posted)
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."
Full Story (comments: none)
Python
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."
Full Story (comments: none)
Version 0.6 of Distribute has been announced.
"
Distribute is a friendly fork of the Setuptools project."
Click below for change details.
Full Story (comments: none)
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."
Full Story (comments: none)
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.
"
Full Story (comments: none)
The August 6, 2009 edition of the Python-URL! is online with
a new collection of Python article links.
Full Story (comments: none)
Tcl/Tk
The August 6, 2009 edition of the Tcl-URL! is online with new
Tcl/Tk articles and resources.
Full Story (comments: none)
Test Suites
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".
Full Story (comments: none)
Page editor: Forrest Cook
Next page: Linux in the news>>