Source L10n for extensions (ChatZilla, venkman and others)

Robert Kaiser <[email protected]> Sat, 08 Sep 2007 22:03:16 +0200
Newsgroups gmane.comp.mozilla.devel.jsdebugger
Message-ID <[email protected]>
Hi,

[Posted to dev-l10n as well as ChatZilla and venkman groups and 
owners/peers; please follow up to the dev-l10n group/list with 
discussion, reactions and followups, so everyone affected can read all 
of this discussion in one single place]

You might have seen my recent rush for ChatZilla and venkman source 
L10n, and I admit I probably was too eager to get something going that I 
stepped on a few people's toes. I want to start a discussion with this 
post now to get this all solved the hopefully right way, with 
participation of everyone directly affected by this.


I've been informed that what we need for any addition to the L10n CVS 
mechanism is a proposal on what's expected to work, and what is not, and 
who's expected to do what (Axel called that "concrete agreement" or 
"concrete contract" in bug comments).
This means that everyone should know how it affects 'hourly' builds, 
nightlies, release builds, and language packs and what release manager, 
extension author, and localizers are supposed to do in the process for 
the added locale strings of those extensions - in this case ChatZilla.
The contract/agreement should also tell what is supposed to turn the 
build red, what turns the build green, when something gets shipped, when 
not - everything one needs to know about how our processes will/do work.


I will NOT post this contract here because we obviously need the 
extension author(s)/owner(s) to agree. I'm posting my intentions here 
and a way how I propose we can move forward on this. This should be a 
base for discussion, not something anyone reasonable has already agreed 
with - just to make this clear from the beginning.


My main target here is to enable us to ship SeaMonkey 2 in a fully 
localized fashion, including ChatZilla and possibly venkman, but not 
force localizers to provide those extensions in their language.
As DOM inspector and reporter have other ways of providing L10n which 
work in a way that we can ship in a way where a user get them to display 
in their language, my planning has no priority for them but should 
include figuring out a system that could be applied to them later 
(possibly only after the 1.9 cycle that SeaMonkey 2 is based on).

So, the highest priority for me is to get localized SeaMonkey 2 (trunk) 
working with optionally localized ChatZilla (and possibly venkman).
If it's easy and nice to do, we should figure out and possibly enable 
some way of L10n for XPI packages for those extensions as well as 
SeaMonkey builds created with --enable-ui-locale and langpacks.

Localized SeaMonkey 2 is created via repackaging, which takes an en-US 
build and replaces its various localizable content with resources for a 
different language. Unfortunately we don't have machines running yet 
that would do this in an automated fashion, so my first attempt was for 
getting --enable-ui-locale working and I figured out a way that would 
make some kind of localized XPIs possible.
While the locations of the en-US and actual L10n files are the same for 
all those ways of L10n, the Makefile and XPI creation changes might be 
more or less different. In this way, my first take on this problem 
probably wasn't ideal - but at least the locations of the ChatZilla 
files in CVS are correct. So far, so good.
I'll probably work on getting one of my private trunk tinderboxen to run 
that repackaging stuff so I can get some idea of what changes we need to 
get this working correctly.

I don't know for sure yet, but what we might need there is to have 
localizations for the extensions in different files from the extension, 
or at least have the non-en-US localizations separately from the main 
extension.
Interestingly, ChatZilla currently distributes separate language XPIs to 
supplement their extension with add-on locales. They even invented a 
locale versioning method to make sure users are having the correct 
language pack. Gecko-1.9-based extension manager now can cope with that 
itself due to supporting extension dependencies. And this process has 
its L10n files separate from the extension itself, which is what 
repackaging and even AUS2 might want or prefer to work correctly.

So, to me, it seems that the way to go for those extensions is something 
Axel called "dependent langpacks" - which is more or less what ChatZilla 
already uses, but with extension dependency added into it (which is 
ignored on older applications, so ChatZilla langpacks can easily add 
them and still be compatible with older apps).
What this means is that the original extension packages will probably 
all include the en-US locale as previously, and additionally we'll have 
every existing additional language as a separate extension (both in 
SeaMonkey and as XPIs).

How does that idea/proposal sound?
Something you feel comfortable with having?
If not, what alternatives do you see?
What additional processes do we need to go with that?
How can we arrive on a contract/agreement like described in the first 
section of this post, maybe based on this solution?

If we arrive at a point that extension owners/peers and L10n people feel 
comfortable enough with, I'd be happy to spent some time looking into 
how we can make it a reality and work on the needed changes to 
Makefiles, etc. - but first, let's get to a point where we agree on how 
to do it.
Sorry again for being to eager to get something done in my first 
attempt. I felt I needed to get something moving before some doors might 
close and we might not get a solution in the 1.9 cycle which we need for 
SeaMonkey2 though. I hope we can now come to a solution that will work 
for all of us and make our processes smoother all in all.

Robert Kaiser