Mi blog lah! Το ιστολόγιό μου

3Mar/084

Designing a command-line translation tool for GNOME

One messy task with GNOME translations is the whole workflow of getting the PO files, translating/updating/fixing them, and then uploading them back. One would need to use command line, and several different commands to accomplish this.

KDE and KBabel has a nice feature that allows you to easily grab all translation files, work on them, then commit through SVN. All through the GUI! It helps a bit here that the translation files for a specific language are located under a single directory.

The current workflow in GNOME translations typically consists of

  1. Getting the PO file from the L10n server (for example, GNOME 2.22 Greek) (also possible to use intltool-update within po/)
  2. Translate using KBabel, POEdit, GTranslator, vim, emacs, etc.
  3. svn co the package making sure you have the correct branch. One may limit to the po/ directory.
  4. Put the updated file in po/
  5. Update the ChangeLog (either with emacs, or with that Perl script)
  6. Commit the translation.
  7. (If you committed on a branch, also commit on HEAD)

Tools such as Transifex (used currently in Fedora) take away altogether the use of command line tools, and one works here through a web-based interface. Apparently, Transifex is having a command-line tool in the TODO list.
What I would like to see in GNOME translations, is a tool that one can use to

  1. Grab all or a section of the PO files from GNOME 2.22. Put them in a local folder.
  2. Use the tools of my preference (translation tools, scripts, etc) to update those translations I need to update.
  3. Commit those translation files that changed (using my SVN account), automatically add ChangeLog entries, also commit to HEAD if required.

I would prefer to have a command-line tool for this, for now, though it would be great if GUI tools would get the same functionality at some point. For a command line tool, the workflow would look like

The workflow would be something like

$ ssh-add
Enter passphrase for /home/simos/.ssh/id_rsa:
Identity added: /home/simos/.ssh/id_dsa (/home/simos/.ssh/id_dsa)
$ tsfx --project=gnome-2.22 --language=el --collection=gnome-desktop --user=simos --action=checkout
Reading from http://svn.gnome.org/svn/damned-lies/trunk/releases.xml.in... done.
Getting alacarte (HEAD)... done.
Getting bug-buddy (branch: xyz)... done.
...
Completed in 4:11s.
$ _

Now we translate any of the files we downloaded, and we push back upstream (of course, only those files that were changed).

$ tsfx --action=commit
Found local repository, Project: gnome-2.22, Language: el, Collection: gnome-desktop, User: simos
 Reading local files...
Found 6 changed files.
Uploading alacarte (HEAD)... done.
Uploading bug-buddy (branch:xyz, HEAD)... done.
...
Completed uploading translation files to gnome-2.22, language el.
$ _

Related posts:

  1. Towards a GNOME CLI translation management tool
  2. Using SVN for GNOME Translators
  3. Translating the OLPC
  4. FOSDEM ’08, summary and comments
  5. Χρήση μεταφραστικής μνήμης με παραδείγματα – GNOME

About Simos Xenitellis

No description. Please complete your profile.
Comments (4) Trackbacks (0)
  1. A command line tool as you describe above it will be great thing for svn users. Time used managing translations will be significatly reduced. It will also help applying global changes/fixes to all translations on the fly!

    Like or Dislike: Thumb up 0 Thumb down 0

  2. Rather than using ssh-add explicitly, use libpam-ssh.

    Like or Dislike: Thumb up 0 Thumb down 0

  3. This won’t fulfill your (our) wishes, but is very interesting and on-topic:

    http://danilo.segan.org/blog/prevod/po-merging-and-diffs

    Just a reminder, since I never can find this article when I’m looking for it!

    Like or Dislike: Thumb up 0 Thumb down 0

  4. Simos, thanks for the clear insight to an experienced translator’s workflow. :-)

    The CLI you mentioned is very elegant, a challenging target to reach. There is already a working CLI prototype for Transifex — I think soon we’ll have all the website’s functionality duplicated and have the client packaged in Fedora.

    Like or Dislike: Thumb up 0 Thumb down 0


Leave a comment


Comments are filtered through Akismet for spam detection. Use of a non-personal web site or blog URL in the field below and/or comments that are off-topic or personal attacks will likely be removed at my discretion. Your opinions are welcome but please keep them polite and constructive.

No trackbacks yet.

Switch to our mobile site