Improving Liferay translation effort through Pootle

We have been working for a while in the task of integrating Liferay translations and Pootle. The overall goal is to make it easier for translators and contributors to improve the Liferay project by providing suitable translations for the static strings which make up the texts displayed by the portal.

Up to now, the classic procedure for such a contribution is to open the Language*.properties file corresponding to the project we are translating (usually Liferay portal, but also plugins) and the language/country we are confident with. Then, we locate the strings we want to translate, and substitute their current value (usually, auto-translated or auto-copied from Language.properties file)  by a new, reviewed one in the target language. Once we are done, file is commited to version control system (VCS) for final approval or rejection.

This procedure may be hard to follow due to:

  • Contributor requires technical skills to configure SVN in her local environment, locate the Language file in the code, ...
  • There is no support for language file edition other than tools/plugins for Java properties edition

Pootle is a tool which allows people to: 

  • Browse a set of projects which are being translated to many languages
  • Browse a set of languages and the projects which have translation to each language
  • See the translation progress for a whole project, language or a project/language pair.
  • Browse the untranslated keys of a project and language
  • Suggest translations, which means that key remains untranslated but there are some proposals for consideration
  • Submit translations for keys (whether previously translated or not)
  • Review suggestions (approve/reject) as well as check some quality tests performed by Pootle
  • Work in parallell for a given language/project pair

Any liferay.com user becomes a contributor which can log-in in Pootle, browse projects and suggest translations. In addition, some users are translation leaders who can review suggestions and make translations. All this information is stored in the Pootle database.

You can start translating Liferay to your own language right now login with your liferay credentials at translate.liferay.com (please use your screenname as login!). Detailed instructions for using the Pootle UI are provided in the wiki page Translating Liferay using Pootle.

To enable this new working environment while keeping consistency with the classic workflow, we have written a script that automates the information flow from VCS to Pootle and vice-versa.  This way, VCS files are checked out, processed and imported into Pootle projects, while translation work done through Pootle will be seamlessly integrated and prepared for VCS commit just like if someone would open the Language_*.properties file and worked directly with it as in the classic way.

We truly hope that this procedure will encourage people to contribute tranlations to the Liferay project or any of its plugins. We highly appreciate suggestions/feedback about this new way of translating liferay.

For more information about Liferay translations (becoming a translation leader, adding a new language to the portal...), please check the translation forum.

Many thanks to Milan Jaros, Alberto Montero, Tobias S. Käfer and Brian Chan for their valuable help and support.

8
Blogs
Hope you guys can find a clean way of having multi-lingual template-files as well.
And I am still wondering why email templates are in text files and not in database. Writing extlets to only change wiki notification template is a pain...
Hi Puj, email templates can be configured from the UI. If you go to the wiki configuration you change the template there.
This is great.

So what is the best way to start a translation for a new language?

I would like to start a translation to Danish.
[...] As part of our effort of improving the Liferay translation process, some time ago we set up a Pootle site and created translation projects for the most important plugins. Now, the Liferay Portal... [...] Read More