Transifex CLI and xgettext mini how-to

From Davical
Revision as of 13:37, 10 January 2016 by Frizou (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

DEPRECATED

A merge between this page and pre-existing documentation under git repository is in progress. https://github.com/DAViCal/davical/tree/master/docs/translation.rst


DAViCal: working with Transifex

Transifex provides a CLI tool to synchronize translations from the web. It's called tx.

Installation

Some Linux distros provide a transifex-client package, but it's usually an outdated version. For instance, Ubuntu 12.04 repos offer transifex-client v0.6, but the latest release of transifex client is 0.10.

Installing the latest version of transifex client can be done with pip:

   # pip install transifex-client

If you want to upgrade, just run:

   # pip install --upgrade transifex-client

Client configuration

Set up your Transifex account details at ~/.transifexrc :

   [https://www.transifex.com]
   hostname = https://www.transifex.com
   password = <your_clear_password>
   token =
   username = <your_username>

Make sure you give it 0600 permissions.

Project configuration

Transifex client will know how to synchronize DAViCal translations by reading the .tx/config file inside the project root directory.

These are the contents of the file:

   [main]
   host = https://www.transifex.com
   [davical.messagespot]
   file_filter = po/<lang>.po
   source_file = po/messages.pot
   source_lang = en
   type = PO

Pulling translations from the web

tx supports downloading latest translations from Transifex for every registered language:

   $ tx pull -a
   New translations found for the following languages: ca, ko_KR, id_ID, cs_CZ, ar, sk_SK, fi
   Pulling translations for resource davical.messagespot (source: po/messages.pot)
   -> fr: po/fr.po
   -> pt_BR: po/pt_BR.po
   -> pt_PT: po/pt_PT.po
   -> de: po/de.po
   -> it: po/it.po
   -> hu: po/hu.po
   -> et: po/et.po
   -> es_MX: po/es_MX.po
   -> ja: po/ja.po
   -> ru: po/ru.po
   -> nl: po/nl.po
   -> es_VE: po/es_VE.po
   -> sv: po/sv.po
   -> es_AR: po/es_AR.po
   -> es_ES: po/es_ES.po
   -> nb_NO: po/nb_NO.po
   -> pl: po/pl.po
   Pulling new translations for resource davical.messagespot (source: po/messages.pot)
   -> ca: po/ca.po
   -> ko_KR: po/ko_KR.po
   -> id_ID: po/id_ID.po
   -> cs_CZ: po/cs_CZ.po
   -> ar: po/ar.po
   -> sk_SK: po/sk_SK.po
   -> fi: po/fi.po
   Done.

Extracting English strings (messages.pot)

As DAViCal uses gettext translation files, the tool to extract base strings (in English) from its source code is gettext.

DAViCal uses a custom function called `translate()` instead of the default `_()`, so our xgettext call needs some additional parameters:

   $ xgettext -o po/messages.pot -L php -j --keyword=translate $(find htdocs inc scripts -name '*.php')

This generates a new po/messages.pot, merging (-j) with existing strings.


Uploading English strings to Transifex

To upload a new messages.pot to Transifex the tx client can be used as follows:

   $ tx push -s

The '-s' switch tells tx to upload the source files.