The Nightingale Localization Platform Is Ready!

Thanks to our friends of Babelzilla, you can now help improve Nightingale localization (L10n).


If you want to translate/review Nightingale localizations you will have:
  • To have an account on our forum and PM us (GeekShadow or rsjtdrjgfuzkfg) for locale request
  • To register on (use Password Reset if you had already a classic Babelzilla account)
  • Request on the Nightingale tranlation project page to be on team for the desired locale
  • We will make you a post on the forum as well to be able to coordinate your work with the community
  • Optional: If you have a GitHub account, give us your GitHub mail so that your work will be committed with your name/mail to the repository
After being approved, you will be able to review your current locale and also complete it if it’s not 100% done yet.
We will be adding new strings soon, so stay tuned and help us!

History of L10n

At the beginning, Nightingale had no real L10n support, we only took a verbatim copy of Songbird’s langpacks with no changes made to them.
Songbird «had» (has) a translation website platform written in Ruby which was unfortunately never released as open source and was a bit limited with some disadvantages.
  • The website was open and everyone could translate like Wikipedia with simple edits, which could have resulted in a mess if there was nobody watching changes and what was going on
  • The platform never relied on a physical public repository, it means everything for langpack generation was done on Songbird’s servers without file system/tree view for public
  • There was no real review system and no way to do things like downloading only translated strings (without en-US strings)
For Nightingale, we have decided to team up with Babelzilla. They are long time friends, and they already have been hosting Songbird add-ons as well as Nightingale’s.
The Beta Babezilla platform we are using is based on Transifex, an open source localization platform. Tim Babych made a fork of this platform, improved and adapted it for Mozilla add-ons and Mozilla based applications. You can read more about it in the Babelzilla blog post.
This platform provides us a great set of tools like the Transifex client, team management, review process, ability to test langpacks, etc.
Moreover we have made some cool tools to sync translators’ work with our Git repository, so we can track all the work to have a better visibility.

Work done so far

A lot of cleanup work was done before importing Songbird localization files into this platform:
  • Improved Ellipsis usage on every locale and replaced ”…” by ”…”
  • Fixed usage of double quotes inside a string in songbird.dtd
  • Converted some strings’ values to double quotes
  • Replaced Add-ons URL by add_ons.url
  • Replaced Bugzilla URL by file_bug.url
  • Removed spaces on some strings in
  • Replaced “Songbird” strings by “&brandShortName;”
  • Removed backslashes ”\” in foreign languages where it’s not needed
 We hope you will be able to review and clean more strings in your locale too.
We also have added two new strings and more are coming:
  • “Flat” string for equalizer (The default preset)
  • “Unnamed Pane” string for display panes (This will later allow you to localize Display pane titles)
We have tested langpack import on both Babelzilla WTS (old system) and Babelzilla Adofex (new system) and decided the new system was a good start because it’s smoother and open source. since it is open source, we were able to help testing it and report bugs to improve it!


During the L10n setup, a lot of Bash scripts were made to deal with different tasks, here are a few interesting ones:
  • Two first scripts were made to reorder strings in foreign locales, because langpacks came with mixed strings and so it was hard to track differences. One for .properties and another one for .dtd. Those scripts ends up used only for testing because Babelzilla was also able to reorder strings on langpacks
  • A script was made to fetch all langpacks from Songbird website and unzip everything
  • This wasn’t enough, some langpacks were missings (because they are not shipped with Songbird they doesn’t have not enough strings translated), another script was made to fetch from translate website
  • We even made a Python script to remove en-US strings from langpacks where strings were missing!
  • For previous Nightingale releases we made a script to take Songbird langpacks and repack them to be compatible with Nightingale
  • Now we have a full script to produce our own langpacks using files from Babelzilla
  • Last but not least we made a script to track changes done on Babelzilla and commit those on GitHub when a change is done
Some of those scripts are yet to be released or improved, but everything is working at this time.
The great thing is that once we release the new version of Nightingale, a simple script execution will be able to push langpacks from the latest translation version online :)
This cooperation could have not been possible without the help of : Tymofij, Goofy and Pascalc from Mozilla/Babelzilla who helped us providing support so thanks a lot to them!

What’s next?

We also plan on hosting Nightingale add-ons and their locales online so you can translate them, along with more tools to help you localize efficiently :)


Bug Bounties


Exciting news for those of you who want to help Nightingale development with a little bit of money: we are officially using Bountysource for bounties on bugs now. Bountysource is an open source project, which allows users to put money on a bug or feature request – wether it’s already in the issues tracker or not. And it makes it easy for developers to find bugs to work on to get a little bit of money. and it’s perfect for us: we don’t have to handle money in the whole process. To give a bounty on an existing issue, just go to and select the issue you want to speed up from the list.

BountysourceBy putting a bounty on a bug, you make it more likely to get another developer, who is not currently wokring on Nightingale to fix a bug. We from the team will fix bugs with and without bounties equally, just dependent on our plans and personal preferences. So no worries if you don’t have the money to boost an issue.

We will add the “bounty” tag to all issues with bounties. If you start working on an issue with the tag, be sure to got to Bountysource and click the “Start Work” button.

For more information on how Bountysource works, visit their FAQ. Please hang on if you want to donate directly to the project. We are still looking into how to handle money the best.


Video of our Talk at RMLL 2013

Faster than expected: here is the video of our talk at RMLL 2013. As mentioned in the last post, GeekShadow and I talked a little shorter. We registered for 40 minutes but ended up with about 20 minutes. Enjoy!

RMLL 2013 Wrap-up


I’m sorry I am a little late with this blog post, but first I had to catch up a bit of sleep after the RMLL. Because we didn’t sleep too much. Today I worked the whole day hard on the new version of the website. I even livestreamed it. I will do more streams this week, look out for tweets from @GetNightingale (which will be a lot more active now, because I’ve got the password).

Over the weekend there was an event from the RMLL called “the grand public weekend”. It was a few tables arranged as a U around a big Tux-Ballon. The first thing we did, was putting a Nightingale Sticker on it.9278922554_4d87c17fc3_o_rc

Afterwards we were hanging out at the Mozilla booth and inspecting the other booths. We is me (freaktechnik) and GeekShadow.

During the week we were always at our own booth. We spoke to a lot of people and handed out a lot of stickers. If you still haven’t got a sticker, you can now download the template from our branding Github repo. I also crashed Nightingale at least once a day, but I guess that’s related to my OS and not Nightingale. Even tough I insisted on talking English (GeekShadow would talk French if people didn’t understand English), I still learned some French. the best part was visiting other booths and collecting stickers and other goodies. Or getting gifted a Framazic CD. Thanks to Framasoft!


We had our conference at the very end of RMLL 2013. The presentation was a bit longer than planned, so it was even later. There weren’t a lot of people to listen to us, but what do you expect? The number of people who said they want to try Nightingale was already unexpectedly huge. In the end we only used about half of the time we had to our disposal, but that didn’t matter. You might be able to watch the talk soon.

P.S.: here’s a picture of me, GeekShadow, some Mozillians and other guys.

Nightingale at RMLL 2013

rmllenIf you’re from Europe and are active in the Open Source scene, you might have heard of the Rencontre Mondial du Logiciel Libre (RMLL) or Libre Software Meeting (LSM) in English. This year it will be in Brussels from the 6th to the 11th of July and it will be with Nightingale.

Me (freaktechnik) and GeekShadow will be around the whole meeting. Not only will Nightingale have its own booth, we will also have a talk! The talk will be on the 11th July at 17:20 o’clock in room K3.401. We will talk about various work flows we have for the development. We may be a quite small project, but it’s still a lot of work for just a few people. We will also talk about Nightingale in general; what it is and what we hope it will be. You can find all the details for the talk on the official talk page from the RMLL.

The booth will be right next to the one of Mozilla. We will have some demos. But for people who are already familiar with Nightingale there won’t be anything exciting… We won’t have a secret prototype you can only see at our booth. But there will be stickers!

If you attend this years LSM, don’t hesitate and talk to us!