Translate Toolkit & Pootle

Tools to help you make your software local

User Tools

Improving the Pootle UI

This discussion is taking place on the Pootle mailing list. Contributions are summarized below. Please share your ideas with us. :)

Many of the issues mentioned here were addressed with Pootle 2.0 and Pootle 2.1. Pootle has a brand new design and massive performance improvement. These notes are left here for ideas for further improvement.



The translate page is much faster with Pootle 2.1. With slow internet connections, it might still be too slow for some users. Offline translation is a great solution, but we should continue to work on improving the online experience.


So one fix would be to allow users to edit more than one string on a single page, with a single Submit button at the bottom.

(Wynand) A bit of AJAX trickery will make it more bearable. Fortunately, the Virtaal project will help to improve this considerably, since it will integrate well with Pootle whilst providing a nice off-line editing experience.

A useful addition to the interface would be a last-edited time/date next to each file. Then you would know if that file had changed since you last downloaded it, or not.

Link names


Currently, the Pootle interface is not particularly intuitive. Users misunderstand the purpose of links. Even experienced users forget which one does what, or completely miss the purpose of others. Evidently our current link names aren't always easily understood.


  • Quick Translate
    • View untranslated
    • View blank/fuzzy
  • Translate All
    • View all
  • Translate My Strings
    • View all my strings
    • View mine (all)
    • View all (mine)
  • Quick Translate My Strings
    • View my untranslated strings
    • View mine (untranslated)
    • View blank/fuzzy (mine)
  • Translation links (Quick Translate etc.)
    • Go to strings: Mine | My blank/fuzzy | All | Blank/fuzzy | Suggested
  • Show statistics etc. (commands box)
    • Hide Editing (so you get Show Editing x Hide Editing, Show Checks x Hide Checks, Show Goals x Hide Goals, Show Assigns x Hide Assigns, only one of each pair being displayed at one time)
    • Show summary (this page can then contain other useful info. After all, the other views also contain the stats, they just don't show them graphically.)
  • Show checks
    • Show errors
  • About this Pootle server
    • This Pootle
    • Having “About this Pootle server” (or similar) at the bottom of the page can also be useful. If there is a horizontal line above it, it acts as a visual cue to the user where the page ends.
  • My account
    • My Pootle
    • My Profile
  • Logged in as UserName
    • UserName
    • If not logged in, then displays Guest
  • Start - Previous 10 - Items 11 to 20 of 356 - Next 10 - End
    • << | < | > | >>
    • Items 11-20 of 356 (next line) << | < | > | >>
  • 137/356 translated (156 blank, 63 fuzzy)
    • 219/356 untranslated (156 blank, 63 fuzzy)
    • 356 items (137 translated, 156 blank, 63 fuzzy)

To review, we really want to do three main things, so we'll have three sections (instead of the current stats/editing, checks, goals, assigns, etc.):

  • Work (?)
    • Statistics, goals, work assignment, download for offline translation,etc.
  • Translation (?)
    • Translate outstanding work (current quick translate); Proofread (checks, searching, random clicks)
  • Administration (?)
    • Rights management, version control functions, file management (delete, add, etc. - mostly not implemented yet)


Problem 1: returning to Pootle

If your browser crashes, or you have to relogin or reboot for some reason, you lose your position in the file. For heavily embedded projects like, it takes you quite a while to find your position again.


  • EoghanM: The standard for fixing this is to have normal paging links be 'GET' rather than 'POST'. When you successfully submit a translation, it should be a 'POST', followed by a redirect (to the normal next 'GET' url)
  • Add a Quick Link that returns you to that point
  • Add a Bookmark This Page link for preventative location
  • Add a string number next to each string (much better for references, too)
  • Pootle remembers the last page a user has visited, and returns to it directly on next login (this could be an option), just as a browser saves your last-used pages, and opens them when you reboot.

Meanwhile, workarounds include learning how the Pootle link structure works.

  • You can go straight to any directory by inputting the path plus a slash and question mark, e.g. Pootle/the/path/?
  • You can view that page in editing mode by adding that tag, e.g. Pootle/the/path/?editing=1

Search function


The current search function is better than nothing. However, it doesn't distinguish by case, it runs incredibly slowly on busy serves (see Speed above) and it doesn't work well with similar strings or complex projects.


  • Add case-sensitivity
  • Add regex
  • Add some of the pofilter search functions (e.g. finding accelerators)
  • Add a search box “Go to string [ ]” at the bottom of the

page, in a blue ribbon, along with the navigational “arrows” mentioned above. This would be easy to implement if there is some way to reference the name of the page and the mode that page is in: add the number from the text box to the end)



Users aren't taking to Pootle as naturally as we would wish. They also don't read docs. We lose users who have misunderstood the functions available, or not even realized they were there. Admins don't use the features we already have (e.g. msgctxt).


  • In addition to the intuivity changes on this page, add the usual HIG question mark buttons at useful points on the page. Pressing a button will bring up a popup frame (or separate window/tab) with helpful info. This is the kind of Help users actually utilize.
    • Make this an option, so admins can enable/disable it globally, and eash user can choose to use it, or not. Temporary use is the best result, while learning one's way around the interface.
    • Display them using superscript:
<p><a href="xyz">Link here</a><sup><a class="nonU" href="abc" 

… with the pseudoclass a:link “nonU” defined as 50% font size and not underlined. The advantage of this is that a question mark is nearly (?) universally understood, and it will be visible yet unobtrusive.

  • We could make use of the “title” attribute of the anchor tag. That would display a little explanatory string for the current link. (Note: this or something similar is already used to show the nature of placeholders in a string.) Use tooltips?
  • Have a Tip of the Month or Version Tip, e.g. “Pootle supports the gettext msgctxt feature: add contextual information to your strings to ensure more accurate translations.”



Although we want to form a translation community, and encourage cooperation between Pootle users, anyone using the Pootle interface is working alone.


  • Make it possible for users to see which other users are registered for the same language as you are, and make it possible for users to send messages to those other users (using a web form, and a Captcha). This would encourage the development of language communities. Jabber is also a possibility for communication via the interface.
  • Allow users to upload photos or avatars into their account/profile, so that users who can see a list of other users can also see the avatars. Avatars could also appear in pop-up chat boxes.
  • Allow certain fields in the account to be displayed publicly (e.g. where you're

from, what kind of job you have, etc), as in fora. This information is displayed when people view the list of users for that language.

  • Include a Bugs and Feedback link on the Pootle homepage (or wherever else you think appropriate).
  • Provide a quick input frame to send a message to this list (with an acceptance filter) to encourage more communication.
  • Place a “Contact us” or

“Contact the administrator” link next to the “About this Pootle server” link at the bottom of the page. That link can be either an e-mail address or a link to a page with just the relevant contact details on it.

A string by any other name


The word “string” is a very geeky localisation kind of term. The normal meaning of “string” would be “a line of characters joined together”. Are there better, alternative terms?

Friedel says: ” 'Unit' is the term used in XLIFF, and is very generic. It is really what we are talking about. There could be several 'segments' once we do sub-unit segmenting. 'Item' is very generic, and not really tied to anything anybody would recognise. 'Message' is very tied to l10n and feels strange when translating a document, for example - otherwise not bad.”

Samuel says: If we move to XLIFF we should start using XLIFF terminology and hope users catch on.


  • Segment
  • Item
  • Unit
  • Message
  • Stick with “string” (that's the term used by translators in FOSS)