Skip to Content

Diff view for suggestions

When choosing the right suggestion to approve, it’s sometimes hard to see how they differ among each other, especially if the difference is relatively small compared to the suggestion length.

Which is why Pontoon now lets you see the diff against the translation in the editing field. You can reveal it by clicking on the “Show diff” button.

Thanks to Tomer for the feature request, Victor for diff algorithm improvements and everybody who participated in the UX discussion.

Set permissions per project

Until now, Pontoon allowed team managers to grant Translator permission on a locale level. That means permission to submit and approve translations could only be granted to users in batch – for all projects enabled for that locale.

From now on, permission can also be set for each project within a locale, allowing team managers to set default Translators for a locale, and then override them for a specific project.

Simply select a project you would like to define custom permissions for and then add additional Translators or remove ones with General Translator permission.

This feature is yet another community effort. Kudos to Jotes who implemented the entire backend piece, and Michal for contributing wireframes and filing bug 1223945!

Designing CAT tool UI for L20n

L20n is an open source, localization-specific scripting language used to process gender, plurals, conjugations, and most of the other quirky elements of natural language. If you haven’t heard about it yet, check it out – it’s incredible.

We want to bring its powers to translators who aren’t coders, so we’re designing a L20n-specific user interface in Pontoon. Here’s a sneak peek of our progress so far.

Simple strings
Pontoon users will find the UI for translating simple strings familiar, because it looks exactly the same as for translating strings in any other file format.

Multiline strings
L20n syntax uses special notation for multiline strings. Pontoon will make it transparent to end users when rendering original strings or serializing translations. Again, no surprises.

HTML attributes
L20n allows adding additional information to the main entity value like HTML attributes. Such cases are marked with a special notation in the UI.

Access keys
Since L20n lets you combine access keys with labels within the same entity, we were able to design a dedicated UI, that lists all possible access keys as you translate the label. You can also type in a custom access key if none of the candidates meets your criteria.

Grammatical cases
With L20n, it’s possible to define different variants of the entity value. Check out the video to see how to store locale-specific variants based on grammatical case.

The plurals UI automatically shows input fields for all CLDR plural forms available for your locale and also displays an example value for each form.

Please note that this is still a work in progress and we’re very much interested in hearing your feedback.

Combining multiple filters

Pontoon now allows you to apply multiple string filters simultaneously, which gives you more power in selecting strings listed in the sidebar. To apply multiple fillters, click their status icons in the filter menu as they turn into checkboxes on hover.

The new functionality allows you to select all translations by Alice and Bob, or all strings with suggestions submitted in the last week. The untranslated filter has been changed to behave as a shortcut to applying missing, fuzzy and suggested filters.

Big thanks to our fellow localizer Victor Bychek, who not only developed the new functionality, but also refactored a good chunk of the filters codebase, particularly on frontend.

And thanks to Jarek, who contributed optimizations and fixed a bug reported by Michal!

Set up your own Pontoon instance in 5 minutes

Heroku is a cloud Platform-as-a-Service (PaaS) we use at Pontoon for over a year and a half now. Despite some specifics that are not particularly suitable for our use case, it has proved to be a very reliable and easy to use deployment model.

Thanks to the amazing Jarek, you can now freely deploy your own Pontoon instance in just a few simple steps, without leaving the web browser and with very little configuration.

To start the setup, click a Deploy to Heroku button in your fork, upstream repository or this blog post. You will need to log in to Heroku or create an account first.

Deploy to Heroku

Next, you’ll be presented with the configuration page. All settings are optional, so you can simply scroll to the botton of the page and click Deploy.

Still, I suggest you to set the App Name for an easy to remember URL and Admin email & password, which are required for logging in (instead of Firefox Accounts, custom Heroku deployment uses conventional log in form).

When setup completes, you’re ready to View your personal Pontoon instance in your browser or Manage App in the Heroku Dashboard.

This method is also pretty convenient to quickly test or demonstrate any Pontoon improvements you might want to provide – without setting the development environment locally. Simply click Deploy to Heroku from the README file in your fork after you have pushed the changes.

If you’re searching for inspiration on what to hack on, we have some ideas!

Connect your Pontoon profile with a Firefox Account

We are switching the sign in provider in Pontoon from Persona to Firefox Accounts. This means you will have to connect your existing Pontoon profile with a Firefox Account before continuing to use Pontoon. You need to do this before November 1, 2016 by following these steps:

1. Go to and sign in with Persona as usually.

2. After you’re redirected to the Firefox Accounts migration page, click Sign in with Firefox Account and follow the instructions.

3. And that’s it! From this point on, you can log in with your Firefox Account.

Note that the email address of your Firefox Account and Pontoon account do not need to match. And if you don’t have a Firefox Account yet, you will be able to create it during the sign in process.

November 1, 2016 will the last day for you to sign in to Pontoon using Persona and connect your existing Pontoon profile with a Firefox Account. We recognize this is an inconvenience, and we apologize for it. Unfortunately, it is out of our control.

Huge thanks to Jarek for making the migration process so simple!

Improving string filters

A new filter is available in Pontoon that allows you to search for translations submitted within a specified time range. Do you want to review all changes since the last merge day or check out work from the last week? It’s now easier than ever.

Time range can be selected using the manual input, calendar widget and a few predefined shortcuts. Or perhaps more conveniently using the chart that displays translation submissions over time, so you don’t shoot in the dark while defining range.

With recent additions to strings filters, we’ve also slightly redesigned the filter panel to make it more structured. Also available are translation counts, so you don’t need to apply the filter only to learn there are no matches.

We have more plans for improving filters in the future, most notably with the ability to combine multiple filters, so that you could e.g. display all suggestions submitted yesterday by Joe.

Coming up next
Our current focus is dashboard redesign, which will add some features currently only available on external dashboards. For more details on what’s currently in the oven, check out our roadmap. If you’d like to see a specific feature come to life early, get involved!

Improving in-page localization in Pontoon

We’re improving the way in-page localization works in Pontoon by droping a feature instead of introducing a new one. Translating text on the web page itself using the contentEditable attribute has been turned off.

That means the actual translation (typing) always takes place in the translation editor, which gives you access to all the relevant information you need for the translation.

The sidebar is always visible, allowing you to select strings from the list and then translate them. Additionally, you can still use the Inspector-like tool to select any localizable string on the page, which will then open in the translation editor in the sidebar to be translated.

Translation within the web page has turned out to be suboptimal for various reasons:

  • Original string is not always presented unambiguously, e.g. if containing markup,
  • Additional string details like comments and file paths are not displayed,
  • Suggestions from history, machinery and other locales are not available,
  • Only the first plural form can be translated,
  • It’s hard to control markup or new lines on various sites if they’re part of the string.

Define preferred locales in Pontoon

When translating a string, Pontoon displays all existing translations to other languages in the Locales tab. This is helpful for localizers that understand other languages than English and their native language.

However, the list can get pretty long sometimes, making it hard and time-consuming to find translations one can actually understand. To overcome this problem, localizers can now select preferred locales in the settings, which are shown on top of the list.

Translation counts from preferred and other locales are displated separately in the Locales tab header, making it clear if translations from your preferred list are available before even openning the tab.

Preferred locales

Get involved

This feature has been developed by our volunteer contributor jotes. Would you like to get involved, too? Start here!

Triage translations by author in Pontoon

A few months ago we rolled out bulk actions in Pontoon, allowing you to perform various operations on multiple strings at the same time. Today we’re introducing a new string filter, bringing mass operations a level further.

From now on you can filter translations by author, which simplifies tasks like triaging suggestions from a particular translator. The new filter is especially useful in combination with bulk actions.

For example, you can delete all suggestions submitted by Prince of Nigeria, because they are spam. Or approve all suggestions from Mia Müller, who was just granted Translator permission and was previously unable submit approved translations.

See how to filter by translation author in the video.

P.S.: Gašper, don’t freak out. I didn’t actually remove your translations.