Scr1pts

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

Since Nightingale is a fork of Songbird, we were using Songbird langpacks.

Now that we are working more deeply on the software, we feel we need our own localization system.

Songbird currently uses a custom Ruby web platform hosted at translate.songbirdnest.com to allow contributors to translate strings, but there are lot of issues :

The website is not open sourced and hasn’t evolved in a long time

Translations are never frozen, meaning everybody can edit the current locales

There are no real teams for localization, a Google group songbird-l10n was created to attempt fixing this but it was abandoned

Some locales are absent

Some langpacks don’t include Mozilla strings, meaning preferences interface, download windows, etc. will be in English

The platform is unable to export langpacks without missing strings (they are replaced by en-US strings instead)

No clear changelog for each locale

The localizations themselves also have some issues :

Some strings are no longer used but are still proposed for translation, some are duplicates

“Songbird” is still present in places (instead of brandShortName)

Some specific symbols/punctuation characters are not respected (ellipsis)

Some strings refer to closed source add-ons

There are only 4 files to cover all localizations (while Firefox uses ~50 files, depending on the window or feature)

Good points in the localizations:

The en-US source files weren’t touched for 1 year, so we don’t have to deal with including recent changes

Lots of locales are already 100 % completed

Some unimplemented features already have strings ready like Podcasts or Equalizer presets

The langpack download system is already working well with Nightingale

Who are the translators ?

Some translators were Mozilla contributors, so it’s easy to contact them, though most of them gave up, because Linux support was dropped.

For the next version of Nightingale, we want to fix all these issues by handling the localizations on the Babelzilla platform.

Babelzilla fixes many issues :

It will soon be open sourced since Mozilla add-ons developers use it

It’s much more powerful, and is able to import/export data

It allows team work, frozen strings, fixed release dates…

Many more locales are covered

Translators can easily contact each other

A topic is created to cover each translation

We have much more control on the entire process

Aside from Babelzilla, we will also store locales in our GitHub repo so we can keep track of what’s changed. Scripts will be added to easily build langpacks out of source files.

An attempt was done in the past to use Babelzilla to fix the French localization in Songbird, and it was helpful in comparison to POTI’s translations website. As part of the French community I was also able to meet with most of the contributors – a real plus when working on a project like this.

Moreover, we are choosing this platform because it’s already known by add-ons translators/developers and because of friendship with people who are running it.

You don’t necessarily need to know how to code to help us clean up the current localizations. If you want to help translate, pick up your language skills and try to contact the past Songbird localizers!

We also want to know what localization strings add-ons developers need – we will try to gather data on which are the most used, and if it’s worth including them directly in the application.

Like before, we are contributing back all of our changes to Songbird, and you can check this metabug which covers our Songbird patches.

We really want Songbird to take a look at our clean-up proposition since it helps a lot of the translators and also improves performance (Loading smaller files instead of a big file with all of the strings).

We also want to reduce compatibility breakage for add-ons developers. It means we will not change string ID’s – we’ll also provide documentation on how to best support both apps in the same add-on.

Thanks for reading, and if you have any questions feel free to ask in comments, forums or over IRC !