Translate Toolkit & Pootle

Tools to help you make your software local

User Tools

Specification: Translation History

Specification for tracking translation history, changes in translations and translation events, over time.

User Stories

Jojoo is responsible for Akan and has allowed Peter, a new contributor, full translation rights. The quality of Peter's translations are really poor and Jojoo gives up reviewing. Jojoo wants to revert all translation changes made by Peter and convert them to suggestions.

Susie is managing a translation project. She notices spam suggestions from user eXtreme. She bared the user and drops all translations and suggestions made by eXtreme.

Clive is reviewing translations. The current one looks rather odd so he'd like to see what it was previously. He sees quickly that there aren't any previous translations other then the current one so he bases his review on the current string.

Clive's next string also looks odd but he quickly sees that it has a history. He checks the history of changes and can see the differences made between each revision and who made them. He can also see any comments that where made with that revision and can see when that revision was made in the timeline of any discussion. Although the string is odd he sees that it was changed from the more correct translation to the current translation because it looks better when rendered in the application. So because he knew the history he left things alone.

Clive now finds a bad string that he wants to revert. He selects the previous string from history and commits this change. The history now show that he reverted the string, if he had modified it slightly it would be treated as new. If it is a pure revert then the author can be notified. This allows Clive to give instructions to new contributors and point out errors that they made. If these comments are public then they will appear in the discussion log. If they are private then they will just go to the author. Either way the author is notified that their text was reverted.

Friedel is running a really large installation of Pootle. He is worried that the historic translations will take a lot of space and he'd like to limit how many are stored. He sets the limit at 3 previous translations being kept in history.

Dwayne is migrating a project to Pootle. He has files under version control. He'd like to include some of the historic changes to the file into the history both to aid translation but also to flesh out the projects statistics. Pootle builds that history for him by going through all revisions of the files and adding stats as it goes.


General steps:

  1. Backend to store the data
  2. Recover historic data - so that we can test the backend
  3. Store data to the backend from Pootle
  4. Display data to users
  5. Simple revert
  6. Complex revert with comments
  7. Weaving comments and history


  • How much history?
  • Is it safe to lose the history? Should we make it volatile
  • Do we want to build history from previous commits?
  • Do we want metrics out of the history or just the ability in future to get metrics.
  • What do we want to do with strings that are the same? Is that history repeated for each string? What is the boundary for TM lookup vs history.
  • Do we store history apart from the current translation.
  • What events do we track: new translation, check related fixes, spelling fix, changed source text, obsolete, revert, comment added, change in comment.