sundeep's blog

open source developer


From last few months, working on an idea. Globalization market is evolving and we have better translation platforms out in the market, some of them are closed source but some are open. In the whole process, success is defined when users identify some-software xyz-release is now available in so and so languages. The complexity increases when a project involves various packages. Is translation progress of all involved packages up-to-the-mark for the project’s next release? Transtats is an answer to this!

Though it is just started and in very initial stage, one can use it for tracking translation progress. Transtats tries to create mapping between upstream project - translation platform and release streams. You may checkout docs for deeper insights. It has some inventory on which jobs operate, to create graphs. Lets see few steps how we get started using it.

Check Inventory

Graphs will be generated for enabled languages, aliases are used while syncing. One can create a language set, which can be associated with a release branch. Multiple instances of a translation platform can be added. RHEL and Fedora are release streams whereas Fedora 26 is a branch. A release branch should have a language set and a schedule. Transtats jobs sync at intervals for keeping stats and schedule latest.


Add and Configure Packages

While adding a package, upstream URL is required. And package name is verified with selected translation platform. Translation of a package can be tracked for multiple release streams. Package can be sync’d while adding itself. Refreshing a package updates its details, translation stats and creates branch mapping. It maps Transtats release branches with most suitable project versions available at translation platform.


Add Graph Rule

Slug form of rule name would be saved. This should be specific for a release branch. Packages having branch mapping created can only be included here. Either languages would be picked from associated language set with release branch or can be chosen. Somehow if a package is not tracked for a release stream and selected for inclusion Transtats would show an error.



Transtats has two graph views: specific to a package in all languages for all branches and another specific to a release branch in chosen languages for selected packages. Latter is a graph rule representation and its accuracy depends on branch mapping of packages. A sync’d package can appear in former view whereas branch mapping is necessary for latter.


Transtats has reached 0.1.0 release. If you like the idea and got something to share/contribute feel free to make it together.

PythonPune MeetUp - Oct '16

It has been long attending some talks - specially around Python!! And PythonPune looks perfect to meet some folks working with Python in the happening city - PUNE. If I remember correctly it was 6:30 I woke up and dropped text to my friend at Baner - planning to spend latter half of the day at your place - as venue was at GSLabs, Baner.


Chandan Kumar greeted everyone there and with some backgrounds/purpose of this meetup called for a round of introduction - we had the strength of 50 - with some new faces. Nevertheless common goal was to learn new things. Akshay Goel started the talks with his discussions around pyautogui - an awesome module to automate keyboard/mouse events.


My Talk

And then came my turn. Again Zanata-Python-Client but with more insights to why localization, what purpose Zanata solves and how to start contributing to python-client project. This includes walk-through of interacting with Zanata using python-client. I think everyone enjoyed slides/demo. Got a few questions as well.

my talk

Zanata-Python-Client v1.5.0

This release makes z-p-c little more stable with some major bugfixes. Feature wise we have translation files mapping rules added.

Translation Files Mapping Rules

Customize the way translation files are found when pushing, as well as the location they will be saved to when pulling.

<!-- example rules definition in zanata.xml -->
  <rule pattern="**/pot/*.pot">{locale}/{path}/{filename}.po</rule>
  <rule pattern="**/po/*.pot">{path}/{locale_with_underscore}.po</rule>

In the example above, pattern identifies a source file, and the contents of the rule element specify how translation files will be stored.

The pattern attribute is a glob matching pattern to your source document file(s). You can define more than one rule and apply each rule to a specific set of source documents using different patterns. The first matched rule will be applied to the file.


AI 380 Delhi to Singapore 5:30 AM All were sleeping and cabin crew announces we are about to land at Singapore Changi Airport in 15 minutes. This thrills almost all passengers travelling to Singapore for the first time including me. Within seconds fog started appearing on windows and we landed smoothly. This took 10 mins getting from the arrival gate to immigration post. And after 20 mins or so I completed baggage claim and was heading Terminal 3 arrivals. Met with my colleagues there and by 10:15 AM we boarded MRT to Red Hat Singapore Office. In the evening explored Bugis Street and enjoyed food at Little India - this lead to end of 0th day.

Day 1

Started at Singapore Science Center - wonders of science, technology, engineering and mathematics. At the opening ceremony hosted at The Marquee, Science Centre Singapore Hong Phuc Dang welcomed everyone in FOSSASIA 2016. Justin Lee cheer the crowd and every one felt the enthusiasm being at Asia’s premier open source event.


Harish Pillay the president of the Internet Society Singapore Chapter delivered keynote and spoke about phases of Free and Open Source Software. This took us through the journey! the revolution!!

Working With TMGMT Zanata

TMGMT Zanata is a plugin for Drupal’s Translation Management Module TMGMT. The plugin allows TMGMT to send content to a configured Zanata project for translation, and can download translations as they are ready.

Zanata is a web-based system for translators, content creators and developers to manage localization projects.

  1. Installation
  2. Set Up
  3. Configuration
  4. Translation Jobs


TMGMT Zanata requires the Translation Management Tool module (TMGMT) to be enabled. And to use Translation Management (Node Translation), the following modules must be installed:

  • Entity API
  • Views
  • Chaos Tools (Required for Views)
  • Views Bulk Operations
  • Rules
  • Content Translation (enable only, part of core)
  • Locale (enable only, part of core)

Zanata-Python-Client v1.4.1

A new release - v1.4.1 is out. This brings feature which makes getting started with ZPC more fun. GitHub Release Link

What’s New

  • commands - init, stats - enhances CLI experiences.
  • Some bug fixes - including critical issues.
  • Now the code is more robust, and better to understand.

Getting Started with Zanata and Python Client

Starting out with translation project is a breeze with Zanata. Let’s get started…

Server Side - User Settings

Point your favorite browser to and login (signup for a new account). You may find this useful.

  • Navigate to Settings and see for Client.
  • Generate a new API key, ignore if it is already there.
  • Look for user configuration contents for zanata.ini.

Done! Let’s move on…

Zanata-Python-Client v1.4.0

ZPC is a convenient way to communicate with Zanata server to push text for translation and pull translated text back for inclusion in software or documentation builds. This release brings fresh experiences to translators and contributors. GitHub Release Link

What’s New

  • Use latest list of languages defined in the server for a project when using the client.
  • Should be able to specify minimum percentage of messages translated on pull.
  • Keep source and target dir paths in zanata.xml
  • Code improvements for better maintainability.


I am sure, your search for translations platform, which can cater all your requirements, would come to an end, when you look at Zanata, and if your project is already here - we have some new exciting features waiting for you to check them out. Let’s get started…