Creating multi-lingual versions of Firefox and Thunderbird?

Last week, I was at a language school in Shingu, Japan that uses both Firefox and Thunderbird – and they *love* what we do. The people working in the office are from all over the world – native speakers in various languages. When they found out I worked at Mozilla, they asked if there was a way to switch locales depending on who is using the various shared computers in the office.

To be clear, they were not asking about having ‘n’ installations, one per user, each installation in a different locale. Instead, they were asking about having one installation that can switch from displaying all menuitems/dialogboxes/etc from displaying in one locale to displaying in another locale. This would allow all users to see the same shared browser history in Firefox, same company email inbox in Thunderbird, but each be able to use the computer in their own native language. Students learning new languages could also try using different locales when they are helping out in the office.

On my computer, with en-US TB2.0.0.21, I was able to install the QuickLocaleSwitcher addon, install the jp-JP-mac language pack xpi file from, restart Thunderbird, and bingo – I now had ja-JP-mac TB2.0.0.21! Success. πŸ™‚ I repeated the same experiment using bsmedberg’s Locale-Switcher addon instead, and it worked equally well. I then repeated these two experiments with Firefox 3.0.7 and they both worked perfectly, as expected. So far so good.

1) Gotcha: One of the computers has ja-JP TB2.0.0.21 installed, so to be able to switch it to en-US meant installing the en-US xpi file. But it turns out we never publish the en-US xpi file on, so I could never install and switch to en-US. While I could install any other locale, including different english locale, like en-GB, but that wasn’t the point. The only way to switch from any locale to en-US was to first download the en-US build?!? Huh? Where was the en-US xpi file? Turns out, while we publish xpi files for all other locales, we’ve never ever published the en-US xpi file. I’ve filed bug#485860 to have release automation publish the en-US xpi file, alongside the xpi files for all the other locales.

2) Idea: We currently create one separate download per locale. 70 locales means 70 downloads. What if we also created one additional 71st download which contained all 70 language packs and one of these two addons out-of-the-box? For some specific types of users, I think this might be useful, so I’ve filed bug#485861 to track this. Initial thoughts:

  • I’m not talking about modifying the existing locales that we already publish. Instead, we’d just produce one additional new locale repack (called “multi-lingual”?), and make it available on the usual all.html page.
  • This would be a bigger download, because it has all the xpi files. Back of envelope estimate is 7.4MB bigger before any installer compression.
  • There’s some concern that having multiple xpi files would cause a slower startup time on the very first startup after installation, but not on subsequent startups. mossop is investigating if this is the case, and if so, to what extent.
  • Ideally this multi-lingual release would have the addon and multiple xpi files included, so it would just work out-of-the-box. But I’ve no idea whats involved with pre-bundling a specific addon in Firefox or Thunderbird. However if we produce a multi-lingual release containing all the xpi files, but not either addon, and we ask the user to install the addon manually, we’ve still simplified the setup steps that a multi-lingual user needs to follow.
  • I’m still trying to figure out the update scenarios to see if there’s any gotchas.

What do people think? Also, are there any other gotchas people can think of?


9 thoughts on “Creating multi-lingual versions of Firefox and Thunderbird?

  1. Couldn’t the addon just grab the locales, that the user selects, off the ftp site? Such that the workflow would be: Download Firefox for any locale (probably already done), install the addon, configure the addon (e.i. choose what locales to enable — which would grab the locale files).

  2. One source of problem I see is that some locales come with specific values for several preferences, but I don’t know how it is handled in detail. If the way they do it is by changing the default value for a new profile, you won’t get easily get the correct value for each local when you switch inside the same profile. But many most of what is not vert important. On th etop of my head the biggest problem I see is that those preferences are needed to adapt the font selection to the best choice to display properly the language, and you will loose somewhat to this regard if it can’t be done.

  3. 70 languages and growing seems like an awfully long list. I imagine someone with a minor language as their first language might give up and use a second language rather than try to search through a long list, especially if they don’t know the name of the language in english or the 3-letter language code or whatever they are sorted by (assuming they are sorted).

    Maybe this is an opportunity for someone to invent a locale switcher that can organize the languages in some way. Try to find an organization that will scale as more languages are added in the future. Some ideas to get started:

    a. like a timezone map, click a region, then show languages known to be spoken nearby, by traders as well as natives. (switch to smaller regions as number of languages goes up in a region. UN languages will show up in many regions.)
    Issue: users might pick location where they are now, not where they grew up. (can’t give instructions since they would be in wrong language if user is trying to switch.)
    b. do the same but with a menu or hierarchical tree, and describe regions with icons shaped like the region. (can’t name the regions since they could be in an unknown alphabet if user is trying to switch. Small regions might be hard to recognize in an menu icon.)
    c. allow the user to type the name of the language (native or english or UN language or G-20 language or …)
    This assumes an Input Method Editor is installed for non-local languages.
    d. allow the user to type the language code (for repeat users at the language school, after learning code)

  4. You are right about the missing en-US languagepack. As a localizer I once wanted to check the English version instead of my own locale, so I had to install the en-US version first. I would vote for the bug.

    Another Gotcha:
    There is no update system for the languagepack “add-ons”. So when Firefox or Thunderbird update to the newest version, the languagepack is not compatible with that version and should also update automatically.

    Another option for a user to create a multi-lingual pack would be if they are able to select the languages they want from a list and let the Mozilla servers create it on-the-fly, after which it can be downloaded. Of course this is way more complicated.

  5. For what it’s worth, Linux distros such as Fedora and Red Hat have had this support for a long while. We include all the langpacks in our rpm packages and then all the user needs to do is select their language upon login (this is remembered for subsequent logins, and can alternately be done via the menus) which takes effect for all applications, including Firefox and Thunderbird. When it starts, it all just works. Other Linux distros do the same.

  6. I think this is an excellent idea! At my old job, where we were several workers having different mother languages, being able to easily change the language of Firefox and Thunderbird would have helped a lot rather than trying to read menus and preferences in a foreign language.

    If the size of the package is a problem, we could imagine that when you first install the application, it asks you which languages you want to install (select them from a list). These languages are immediately downloaded from the FTP server and installed locally. If you later want to use an additional language, just select it, and if it’s not installed already, the application would download it and install it. This way, you only downloaded languages you really use.