The Nightingale Localization Platform Is Ready!

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

TL;DR

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 http://beta.babelzilla.org/ (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 songbird.properties
  • 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!

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 :)

rsjtdrjgfuzkfg

Happy Nightlies! (Updated 2/13)

 “Nightlies” are builds compiled every night, more information on Wikipedia : http://en.wikipedia.org/wiki/Nightly_build
Since the beginning, there were Songbird nightlies available to test out new features and develop add-ons for future versions. There were both branch and trunk builds released each day – later they decided to only provide trunk builds. As of now they seem to build branch builds again for version 2.1.0.
Nightingale’s case is particular, we didn’t have build servers like POTI does when starting the project. Fortunately, we are now setting up buildbots to compile and upload nightly builds every day, if there are changes in the source code.
To begin with, three build servers are provided by Antoine (GeekShadow):
  • GNU/Linux, Ubuntu 12.04.1 i686 → .tar.bz2
  • GNU/Linux, Ubuntu 12.04.1 x86_64 → .tar.bz2
  • Microsoft Windows Server 2003 x86 → .exe (Inno Installer) and .zip

One is provided by Matt (ilikenwf):

  • Mac OS X 10.5.8 and greater → .dmg
All servers are located in France, except for the Mac, and are set to upload builds to SourceForge: http://sourceforge.net/projects/ngale/files/trunk-Nightlies/

For now we are only building the sb-trunk-oldxul branch which is version 1.12 but matches Songbird trunk (2.2). We chose to rename to version  to “1.12″ mostly because there are no major changes between the Songbird trunk (2.2) and 1.11 since POTI is mostly bumping up the version numbers for their closed-source work.

Some technical notes :
Unlike Mozilla and POTI, we have decided not to use Buildbot since it’s much too complex for our needs. Instead, we are using our own bash scripts available on GitHub. They are easy to use and modify :)
More information can be found on our wiki :
Whether you’re a developer wanting to build the next generation of add-ons or a user not afraid of the freshest and sometimes very unstable changes,  Grab a Nightly Build and let us know what you think!

Nightingale localization

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.
If you want to help, you can look at opened issues here on GitHub :
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 !
-GeekShadow and the Nightingale Team

An Early Easter Update

It’s been a month since we released Nightingale 1.11, and no we aren’t dead! :)

We are currently working on fixing small bugs and improving the 1.11 branch based on the latest Songbird changes. You can file bugs on our GitHub.

Oh – about Songbird, it’s been 2 years since POTI stopped supporting the Linux release (April 2nd), and as a result, the Nightingale project was born.
Beginnings were difficult but we ended up releasing our first version last year.

In other news, we have several new developers, one of which is augsod. While we don’t know a lot about him yet, he’s been working hard on the master branch, converting our code to work with Gecko 6. As our dev team grows, our community does as well – our latest release has had over 13,000 downloads! Wow!
While this is a shorter update, we appreciate you staying tuned and hitting us up on the forums  from time to time.

Thanks for you support , and Happy Easter!

-The Nightingale Dev Team