When I dipped my hands into Mozilla l10n work, never did I imagine that it would be such an immense challenge figuring out the entire process. I have always been used to GNOME and Fedora which follow a very simple translation and submission process. The translateable entries are made available in a portable object (.po) format. And once translated these files can be submitted to the upstream repository ready to be packaged.
Mozilla is a whole new ball game altogether. First, one has to get the mozilla package from the “STABLE BRANCH” of the cvs repository. The translateable entries hide in the various nooks and corners within the ‘mozilla‘ folder. They’ll carry an extension of .dtd and .properties. But wait! Don’t start translating just yet. The ‘mozilla‘ folder provides you the base material to start working on. There are about 9 folders within the ‘mozilla‘ folder that are relevant for localisation.
So here comes the next major step. At a separate location create a new folder with [your language_name_code]-[country_name_code] e.g. bn-IN i.e. Bengali-INDIA. As mentioned earlier there are about 9 folders from the “mozilla” folder that’ll need to copied into this new folder. But wait again!!! You dont just copy the folders. The new folder has to have the contents of the “mozilla” folder but in a different structure. This is how:
For e.g. inside the “mozilla” folder the “browser” folder is one of the 9 folders that merit our attention. But the interesting bits lay within the “/mozilla/browser/locales/en-US/” folder. One has to copy the contents within the “en-US” folder into the “bn-IN” folder such that the topmost folder within “bn-IN” is named “browser“
cp /mozilla/browser/locales/en-US/* /bn-IN/browser
The gory details about the rest of the folders can be found here .
Once the directory structure is complete, you are ready to get your hands dirty. Check for the files with a .dtd and .properties extension. There would be entries like:
<!ENTITY tabCmd.label “New Tab”>
<!ENTITY goOfflineCmd.label “Work Offline”>
after translation these would look similar to:
<!ENTITY tabCmd.label “নতুন ট্যাব”>
<!ENTITY goOfflineCmd.label “অফ-লাইন অবস্থায় কর্ম”>
After finishing them all you’ll need to submit the [language_name_code]-[country_name_code] folder (in my case “bn-IN“) into the upstream mozilla CVS repository. But…the red sign glows bright once again. :) You’ll need two things here:
1. Mozilla CVS account
2. The submissions *don’t* go into the “STABLE BRANCH” from where you got “mozilla” folder. Instead you put it into the main “TRUNK”.
If the amount of translations is large enough to be packaged, it’ll be branched by the nice people at Mozilla to the relevant branch to be included in the stable release.
After months of toil, confusion and thankfully translations the entire process was explained to me by Axel Hecht. He hangs out on #l10n on irc.mozilla.org as Pike and is the knight in shining armour for distressed souls like me who venture into the Mozilla maze. Finally, I am ready to roll on ahead. Thanks again Pike.