Localization Hackathon in Berlin

After much delays, collectively we picked a balmy first weekend of June and Berlin as our host city for a localization hackathon. We had four representing each of Dutch/Frisian and Ukrainian communities, three of German, one of South African English. Most of them had not been to an l10n hackathon, many have never not met in person within the community even though they had been collaborating for years.

Group shot

As with the other hackathons this year we allowed each team to plan how they spent their time together, and set team goals on what they wanted to accomplish over the weekend. The localization drivers would lead some group discussions. As a group, we split the weekend covering the following topics:

A series of spectrograms where attendees answer yes/no, agree/disagree questions by physically standing on a straight line from one side of the room to the other. We learned a lot about our group on recognition, about the web in their language, and about participation patterns. As we’re thinking about how to improve localization of Firefox, gaining insights into localizers hearts and life is always helpful.

Axel shared some organizational updates from the Orlando All-Hands: we recaped the status of Firefox OS and the new focus on Connected Devices. We also covered the release schedule of Firefox for iOS and Android.

We spent a bit more time talking about the upcoming changes to localization of Firefox, with L20n and repository changes coming up. In the meantime, we have a dedicated blog post on l20n for localizers, so read up on l20n there. Alongside, we’ll stop using individual repositories and workflows for localizing Firefox Nightly, Developer Edition, Beta, and release. Instead the strings needed for all of them will be in a single place. That’s obviously quite a few changes coming up, and we got quite a few questions in the conversations. At least Axel enjoys answering them.


Our renewed focus on translation quality that resulted in development of the style guide template as a guideline for localization communities to emulate. We went through all the categories and sub-categories and explained what was expected of them to elaborate and provide locale specific examples. We stressed the importance of having one as it would help with consistency between multiple contributors to a single product or all products and projects across the board. This exercise encouraged some of the communities who thought they had a guide to review and update, and those who didn’t have one to create one. The Ukrainian community created a draft version soon after they returned home. Having an established style guide would help with training and on boarding new contributors.
We also went over the categories and definitions specified in MQM. We immediately used that knowledge to review through live demo in Pontoon-like tool some inconsistencies in the strings extracted from projects in Ukrainian. To me, that was one of the highlights of the weekend: 1) how to give constructive feedback using one of the defined categories; 2) Reoccurring type of mistakes either by a particular contributor or locale; 3). Terminology consistency within a project, product or a group of products, especially with multiple contributors; 4) Importance of peer review

For the rest of the weekend, each of the community had their own breakout sessions, reviewed their own to-do list, fixed bugs, completed some projects, and spent one on one time with the l10n drivers.

Brandenburg Gate and the teamWe were incredibly blessed with great weather. The unusually heavy rain that flooded many parts of Germany stopped during our visit. A meetup like this would not be complete without experiencing some local cultures. Axel, a Berlin native was tasked to show us around. We walked, walked and walked and with occasionally public transportation in between. We covered several landmarks such as the Berlin Wall, the Brandenburg Gate, several memorials, the landmark Gedächtniskirche as well as parks and streets crowded with the locals. Of course we sampled cuisines that reflected the diverse culture that Berlin had been: we had great kebabs and the best kebabs, Chinese fusion, the seasonal asparagus and of course the German beer. For some of us, this was not the first Berlin visit. But a group activity together, with Axel as our guide, the visit was so much memorable. Before we said goodbye, the thought of next year’s hackathon came to mind. Our Ukraine community had volunteered to host it in Lviv, a beautiful city in the western part of the country. We shall see.

Localization Hackathon in Riga

Stas and I met in Riga with the Baltic and Polish l10n communities to do a hackathon. We gathered Latvian, Lithuanian, and Polish. Sadly, nobody from the Estonian community could attend due to conflicting schedules, but Merike Sell joined us on Saturday morning via Skype. We also had Dainis Šantars and Rūdolfs Mazurs join for a few hours each to work on Latgalian.

On Friday evening, we kicked things off warm and dry. That’s worth noting, as there wasn’t any weather like that for the rest of the weekend. Anyway, we grabbed some dinner, and ventured a few places to get a first feeling for Riga.

University of Latvia, Riga
Saturday morning we met at the University of Latvia, and started the actual hackathon with the obligational introductions, and some “spectrograms”. We got some insights on testing, and which versions of Firefox our community uses. Reminder, Developer Edition or Nightly are the right versions. Use the version you work on. We also talked about the web and software in local languages. Seems that using localized versions becomes normal. We also got more insights into contribution patters that people like.

I really like the conversations about contribution patterns. We start the discussion with the question on how often people would like to localize. The answers quickly lead into discussions about localization quality, and which context localizers prefer to get that. But also to the role that Mozilla plays in people’s lives. Getting a better understanding of both are critical as we’re trying to make localization at Mozilla better.

Afterwards, stas and I gave some general project updates. The Mozilla firehose is overwhelming, so it’s good to give an update on the things that matter to the people in the room. In particular, stas covered L20n, which was well received. I talked about how we want to do Firefox l10n less bound to aurora and beta release channels, which people also liked.

We also talked about MQM, a standard of classifying issues found around localization. Once again we learned that it’s hard to explain them.

As usual, we let people work within their teams for half the time. We did help out with accounts, and persuaded folks to do reviews of suggestions. We heard they also used the time to strategically set up their team, and to learn from each other.

Last but not least, huge thanks to Raivis Dejus for organizing this event. He made us all feel welcome, and as warm as it gets, and always had an anecdote about Riga to share. He turned out to be my inspiration for the Berlin hackathon.

Change in Sign-Offs Process for Firefox and Firefox for Android

Message to all Mozilla localizers!

We have already announced this change in the blog post about l10n updates from MozLondon, but this topic deserves a thread of its own.

What is happening?
We are changing the way we are doing sign-offs. I REPEAT, we are changing the way we are doing SIGN-OFFS! 😉

What does it mean?
Basically, we are simplifying your life. In fact, you will not need to request sign-offs anymore.
We have realized that with time, this has become an unnecessary task that has lost its initial meaning. Sign offs, in the sense that we need to tell our system what translations go into a build, are still a technical necessity for the near future. Some of us l10n-drivers (Jeff, flod and I) will start managing the whole sign-off process allowing you to focus on your localizations.

How will it work?
The only thing that changes in your usual workflow is that you no longer need to request sign-offs. Essentially, as long as there’s a good, clean changeset, we will sign-off on it. From now on (we’ve already started), the designated l10n-drivers will perform sign-off reviews on all new changesets a few times a week. This will be the case on mozilla-aurora and mozilla-beta channels (Firefox Desktop and Firefox for Android). We will determine if the changeset is technically correct and will not break anything. You might also receive emails from us with notes about the string changes in case we find any issues.

We hope that this will result in shipping more good l10n updates to users. We consider that getting a localization update to a product – even if not complete – is better than no updates at all. True to our new motto “Simplicity and Opportunity”, we also believe this will simplify things on your side, and is a total win-win situation.

As usual, please feel free to reach out to us with any questions about this. Feedback as you know is welcome as well.

L20n in Firefox: A Summary for Localizers

We’re working on bringing L20n to Firefox and Gecko this summer. Here’s what you need to know if you’re a localizer.

L20n was a big part of the MozLondon All Hands work week. Jeff’s write-up on the All Hands will give you a good overview of all projects and activities the Localization team has been involved in. In this post I’d like to focus on L20n and the plan to
bring it to Firefox Desktop and Gecko.

Continue reading …

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.

MozLondon Localization Sessions

Twice per year, Mozillians from around the world are invited to attend the All Hands work week. All Hands is an opportunity for both paid and volunteer staff from all functional areas to meet together to solve problems, brainstorm new goals, and find ways to make the Mozilla mission a reality. For the localization functional area, All Hands gives us a chance to collaborate on resolving challenges in the l10n process, discuss community needs, and start new programs within the functional area. Below is an overview of the highlights and l10n-specific sessions that were held in London. More information about many of these sessions will be made available in the coming weeks.

Continue reading …

Localization Hackathon in Argentina

From May 20-23, l10n-drivers Jeff Beatty and Delphine Lebédel met with 11 participants from 4 different communities in the city of Buenos Aires (Argentina) for 2 days of localization hacking. These communities represented Spanish from Chile, Spanish from Argentina, Guaraní and one member was from Mozilla Nativo (a community that helps promote indigenous languages in Mozilla products).

This hackathon followed the new 2016 format, as detailed here: https://blog.mozilla.org/l10n/2016/01/08/mozlando-localization-sessions/ – with a few notable differences from this year’s previous experiences.

In fact, we decided to insist more on localization style guides – and integrated a full 2 hours session dedicated solely to their creation. During this allocated time, communities focused themselves entirely on this task and based their work upon the English Style Guide template that the “Translation Quality Team” has created. Some teams decided to divide the work among themselves by sections and each work individually on those – while other communities decided to collaborate as a group – and work their way through each section by discussing and debating each item all together.

We then held a round table to understand what were the take-aways from creating these style guides. Some of the challenges were:
– That the wiki markup was confusing
– That it’s a very long process
– It’s hard for someone to understand the style guide and jump right into it. You need more time to study it, and really understand it
– Some thought it would be easy and suddenly realize they maybe don’t know enough of their own language 😀 Something helpful would be more concrete examples for each part in the English template

Regarded as successes and feedback were:
– That the initial English template is very clear and explains well how to go through the steps
– One community (Spanish from Argentina) almost finished their style guide!
– Guaraní team is doing a Spanish version first and then the Guaraní version
– Everyone has at least a base of work to build upon

Teams did not agree on where these style guides should live: some thought they should be part of the translation tools they use, and others in a wiki or on GitHub. In any case, everyone agreed that this was a great step forward in ensuring quality and consistency across all our Mozilla projects and in the translation work they create.

I would also like to take this opportunity to congratulate the Guaraní community who has recently launched Firefox in their language. This is an excellent achievement. And along with that, they have almost completed Firefox for Android. Congrats!

The Chilean team also managed to finish localizing Firefox for Android during the hackathon. Congratulations to them too!

In all, this event was a great way to touch base with these communities and make sure we are all aligned along the same goals and Mozilla’s mission. Creating style guides was also crucial in initiating a process for them to ensure quality and consistency going forwards.

Thank you to all who participated! You really did an awesome job.

The Buenos Aires Hackathon Participants

The Buenos Aires Hackathon Participants

Firefox L10n Report – Aurora 49

Starting from this cycle I’ll be in charge of sending the l10n report. I’ll also try something different, pointing out relevant changes in the last cycle, and some common issues found during the sign-off review process. The result will be a longer report, but I hope you will find it useful as well.

Here’s an outline of what is currently in Aurora this cycle for Firefox 49, and some information on the accomplishments of the l10n Community during the previous cycle.

Current Aurora Cycle – Firefox 49

Key dates for this cycle:

  • Beta (48): sign offs for already shipping locales must be completed before 20 July. For reference, the date is roughly 2 weeks before the next release date, and it’s the last good day to include your updates into a Beta build.
  • Aurora (49): sign offs must be completed before 1 August.

String statistics:

  • Firefox Aurora desktop has 179 added strings (125 obsolete). About 36% of the new strings are for Developer Tools.
  • Fennec Aurora has 78 new strings (56 obsolete). 19 new strings are Fennec-only (in /mobile).

There are currently no pending requests to uplift patches with strings to Aurora, even if bug 1134073 might request it in the next days (that would mean one added string for DevTools).

For further details on the new features you can check the release notes (they’re usually published a few days after release):

Current Release Cycle (Firefox 47)

Noteworthy events for Firefox 47 (release date: 7 Jun):

  • 61 locales, corresponding to 67% of our shipping locales, signed off updates for Firefox 47 on desktop. This is a decrease in locale coverage from the previous release (69 signed off locales).
  • 53 locales, corresponding to 74% of our shipping locales, signed off updates for Fennec 47 on Android. This is an decrease in locale coverage from the previous release (57 signed off locales).

Noteworthy Changes Available in Aurora

These are some of the interesting changes introduced in the last cycle. Note that you will need Firefox Developer Edition 49 to test them, and the build is usually available a few days after merge day.


Browser: there’s a new dialog displayed to users to reset search preferences. You can test it by opening about:searchreset.

Preferences: English changed the size of the Do Not Track dialog, you should check it after translating the new string (Privacy panel, “manage your Do Not Track settings“ link). Ignore the changed accesskey in this specific changeset, ID has been changed in a following commit.


Team is starting to use a new way to define keyboard shortcuts (not accesskeys), adopting a syntax similar to Electron. You can see an example in this changeset,

You should not translate fragments like CmdOrCtrl, CmdOrCtrl+Plus (Plus indicates the + key), CmdOrCtrl+Shift+D. Also a reminder that you should not be changing shortcuts in general, unlike accesskeys, unless the default keyboard layout for your locale doesn’t include that specific key, or combination of keys.


A few menu items changed capitalization as part of bug 893836. You should update your localization if you’re following the same rules as English, otherwise you can simply ignore the change and keep your existing translations.

Common Issues

The fragment “Error code:” inside these strings should be localized, while NS_ERROR_NET_INADEQUATE_SECURITY should not. It’s easy to miss the localizable piece, given the amount of HTML code in the string.

Data saver” in mobile. In this case “saving data” means “consuming less data”, not “save” as in “save a file”. Thanks to Eduardo Trápani for spotting it and filing a few bugs (a localization note was added in this cycle too).

For locales working on Pootle: always check strings before accepting a suggestion from translation memory. Several locales introduced an unwanted & in cmd.removeFile.label.

Don’t translate example.com, unless your National Registration Authority provides an equivalent domain created for the same purpose. More details in this discussion on dev-l10n.

Thanks to everyone for your dedication and hard work this last cycle. If you note anything missing in these reports, or would like to see other information included, please let me know.

Localization Hackathon in Stockholm

For the second year in a row the l10n-drivers team – represented by Jeff Beatty and I – met in Stockholm with several members of Mozilla’s Nordic communities, guests of the local Wikimedia offices, for the Nordic Viking Mozilla l10n Hackathon. The group of languages represented at the event included Danish, Finnish, Icelandic, Norwegian (both Bokmål and Nynorsk), and Swedish.

Nordic Hackathon - StockholmUnlike last year, when the topics and schedule of the event were largely set by l10n-drivers, this time each localization team was involved in the planning phase, and in charge of setting individual and group goals for this hackathon.

We started our Saturday morning in a sunny but cold Stockholm with some organizational updates, including topics like:

  • Change in focus from Firefox OS to Connected Devices, and how that affects localization priorities.
  • Updates about release and development cycles for iOS and desktop products, and our plans to increase participation and productivity by removing some of the existing technical barriers.
  • Mozilla’s renewed focus on quality, and how that applies to localization.
  • Our goal to improve communication channels with localizers, and help making their training and mentoring process more streamlined, through better documentation and tools.
  • How to use the newly released features in Transvision focusing on quality.

We also talked with localizers about the recent organizational changes inside l10n-drivers. In fact Stockholm also hosted a short but intense work week of the entire team right after the hackathon.

The rest of Saturday and Sunday were reserved for each team to work on achieving their goals, and our role was mainly to help them with some targeted training, and facilitate some discussions.

Several teams started putting into practice our focus on quality by writing a style guide for their language, a step that we consider fundamental to ensure consistency, and help with onboarding new volunteers. They also did work on improving quality across projects using Transvision’s Consistency View as a reference.

For some languages these events represent a critical moment to meet face to face and work together on their translations, since contributors might live hundreds of kilometers from each other and can only communicate online. That’s the perfect time to figure out the division of tasks inside the team, find ways to attract new contributors, rethink tools and workflows, and create onboarding documentation. And that’s exactly what happened for several of the teams at the hackathon.

The weekend ended without a Kubb tournament because of the inclement weather – even if someone insisted on the need of going outside in the snow and play anyway, as a viking would do – and plans for next year’s hackathon. Italy was suggested as one of the potential venues for the event, but I’m quite positive that doesn’t count as a Nordic country 🙂