Skip to content

Workflow between GitHub and Transifex

Leonardo J. Caballero G edited this page Mar 23, 2017 · 22 revisions

WARNING: WORK IN PROCESS!!!

Workflow between GitHub/Transifex

Find out how to create a perfect workflow for the plone.app.locales package between GitHub & Transifex with the .TX Client command tool.

Motivation

This a proposal to improvement the concurrent Plone i18n workflow, using the Transifex platform and GitHub repository.

Inspirations

There a several open-source projects that using different workflow for translations, using some features like:

All these feature are including into the Transifex platform, these very useful to more people working on Plone translations process.

Thera a good examples of open-source projects that using the Transifex platform, as the following:

  • WP-Translations, is a community that aims to be a bridge between developers and translators. We are dedicated entirely to translate WordPress, it’s themes, plugins and documentations.

  • Plone Intranet, is the code name for Quaive, a Social Intranet Collaboration Solution based on Plone.

  • Plone 5 Training, A collection of Plone 5 trainings developed and created by the Plone Community.

  • Plone 4 Training, A collection of Plone 4 trainings developed and created by the Plone Community.

  • Plone 5 Documentation, The translation of Plone 5 Documentation.

Why Transifex?

Thousands of Reasons

Transifex is a dedicated platform for translation, trusted by the Open Source Community, so perfect for Plone projects.

A Platform for Translator

Based on a cloud platform, no need to install anything on your computer. If you’re used to translate on your own locally, with Poedit, no problem, you can import your translated files.

With a clear dashboard and the notifications system stay up to date is everything that happens to our projects.

Transifex integrates lots of tools to create way to communicate between users, at every level of a project, from the management to the translation with tools like global announcements, discussions places (forums) for every languages. At the string level you have a detailed area (extracted from the source language file and the comments of the authors), a tag system, an history system, a glossary and the suggestions.

The suggestions system use a globalized TM (Translation Memory) shared between all the projects of our community. It means a better uniformation of regular stings used in different projects but also a gain of time for every translators with the autocomplete of similar strings.

Every project as in Plone got is own use role system to easily manage them : coordinators, reviewers and translators and to create quality translations files.

But also a platform for Developers

Project can be linked to your .pot source file and every changes you do to it will automatically be reflected on Transifex side. No more hassle managing i18n files and getting in touch with translators, you’re free to spend your time coding.

The Transifex dedicated command line client tool, integrates perfectly in your workflow. Like a Git or svn client simply push and pull to your local folder the translations and get everything ready for your next update.

But enough talking, the best thing to do is using it isn’t it?

Proposal details

The proposal details about this workflow improvement are:

  1. The Plone backend guys add i18n, generate / update the Gettext files (pot and po files).

  2. Using the transifex client (like a git command) to push the pot files (source translation) or translations (po files) to the transifex project.

  3. The Plone translators write his translations and later when the every Team language leader, example Spanish translation team leader, believes the translation is ready to use, then make a pull for translations made (po files) from transifex organizatation using transifex client into plone.app.locales package.

  4. Add a new commit and pull request, for wait to the maintainer guys or owner plone.app.locales package, that for check out and merge the pull request.

Plone organization at Transifex

Our Plone organization into Transifex.

At the moment for Open source projects Transifex only support a specific version for every Transifex project, for example:

  • Plone 5 CMS.

  • Plone 5 Documentation.

  • Plone 5 someting.

  • Plone 4 CMS.

  • Plone 4 Documentation.

  • Plone 4 someting.

Every Transifex project is configured with the Transifex client configuration file (.tx/config) into a specific github repository branch.

Requirements

The following requirements are needed for works with this workflow proposal:

  • A Git tool.

  • A GitHub account.

  • A update working copy of the plone.app.locales package from GitHub repository.

  • Update the pot and po files.

  • A Transifex account.

  • The TX client installed.

Getting started

Install the .TX client

Linux and Mac OS X installation

The Transifex Client is written in Python and most Unix-based systems have Python pre-installed. The easiest way to install it is with pip. Like most Python development tools, you probably want to install it inside a virtualenv, but you can surely install it as root using sudo.

$ sudo pip install transifex-client

Windows installation

The Transifex Client is also available for Windows. You can download the latest version from http://files.transifex.com/transifex-client/0.10/tx.exe. This executable is standalone and does not need to be installed. You can find more details for Windows

To use it, download the executable inside your project, open the cmd program that comes bundled with Windows and hit the command:

$ cd \path\to\project\

More details check out http://docs.transifex.com/client/setup/

Configuration

Initialize your project

To initialize a project, use the tx init command. This is very similar to the way most version control systems handle initialization. This command will create a Transifex project in the current directory.

$ tx init
Creating .tx folder...
Transifex instance [https://www.transifex.com]:

Press Enter (changing the host name is not recommended)

​Creating skeleton...
​Creating config file...
​No configuration file found.
​No entry found for host https://www.transifex.com. Creating...
​Please enter your transifex username: user
​Password: <...>
​Updating /home/username/.transifexrc file...
​​Done.

More details check out http://docs.transifex.com/client/init/#a-sample-client-init

Configure the TX client

More details about configuration TX client, check out http://docs.transifex.com/client/config/

Request a new Transifex project

You can request the creation of a new Transifex project via register a issue https://github.com/collective/plone.app.locales/issues/new.

Request a new Transifex language

You can request the creation of a new Transifex language via register a issue https://github.com/collective/plone.app.locales/issues/new.

More details check out http://docs.transifex.com/projects/adding-and-removing-project-languages/

Creates / updates the Gettext files

Creates or updates the Gettext files (pot and po files) from the plone.app.locales package.

Push translations

Then push the Gettext files (pot files) to the Transifex server using the tx push command:

$ tx push -s

For push the Gettext files (po files) to the Transifex server using the tx push command:

$ tx push -t

For push the Gettext files (pot and po files) to the Transifex server using the tx push command:

$ tx push -s -t

For push the Gettext files (pot files) to the Transifex server using the tx push command:

$ tx push -s -r <myproject>.<myresource>

For push the Gettext files (po files) for specific Transifex language to the Transifex's server using the tx push command:

$ tx push -t -l <mylanguage>

Push Command Reference

Pull translations

Pulls all translations (all languages po files) to the Transifex server using the tx pull command:

$ tx pull -a

Pulls all translations (all languages po files) with the minimum percentage change to whatever you want (example, all translations are 100% done and with the mode of the translation file to pull, is 'reviewed' from the Transifex server) update as translation done from to the Transifex server using the tx pull command:

$ tx pull -a --minimum-perc=100 --mode=reviewed

For pull the Gettext files (po files) to the Transifex server using the tx pull command:

$ tx pull -r <myproject>.<myresource>

For pull all translations (all po files) for specific Transifex language to the Transifex's server using the tx pull command:

$ tx pull -l <mylanguage>

Pull Command Reference

Display or erase

Display or erase Transifex resources / languages (translations) from Transifex.

Display or erase Commands Reference