Closed Bug 256188 Opened 20 years ago Closed 20 years ago

Land toolkit locales-in-CVS on the trunk

Categories

(SeaMonkey :: Build Config, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 271324

People

(Reporter: benjamin, Assigned: benjamin)

Details

(Keywords: l12y)

For the aviary branch, I have coalesced all the localization files that are part of core gecko and the toolkit in toolkit/locales/(en-US). This has allowed other locales to be easily built from the tree using the --enable-ui-locales=ab-CD flag. It also allows automated building and comparison of locales. I now need to land this work on the trunk. Boris was concerned that I had not notified module owners of this change, and that this might be troublesome to some module owners. So I'm filing this bug, and cc'ing all the relevant module owners who might need to be notified. If you have concerns about the localization system I have designed, please let me know (either in the bug or by mail). Otherwise, please mark your r= for this change.
Why is this in toolkit? We already have an l10n directory. And if it is in toolkit, it seems odd to make people who just want the core pull all of toolkit (incl. toolkit/themes) rather than just toolkit/locales/.
Seamonkey already pulls all of toolkit, see bug 251566. The idea that we localize one product at a time, and the "toolkit" will become the xulrunner/libxul, and should be localized as such. To avoid forking these files for seamonkey, the seamonkey build references these files from their "canonical" location in toolkit/locales.
I have the following questions, which I raised at the same time as the "why not tell the module owners?" question and that never got answered: 1) How are reviews being handled for these files? Do DOM/layout/necko/etc localization files fall under "toolkit" review rules? If so, why? If not, how do we make it clear who's responsible for which file? 2) How is localization of gecko-based non-toolkit (and non-XUL, for that matter) products handled in the new world? 3) What's the story on JS engine localization in the new world? Also, I'm not sure it's clear to me how comment 2 addresses the "why is this using toolkit/ instead of l10n/?" question dbaron raised... Localization of Gecko proper is not exactly related to xulrunner (see question 2 in previous paragraph).
> 1) How are reviews being handled for these files? Do DOM/layout/necko/etc > localization files fall under "toolkit" review rules? If so, why? If not, > how do we make it clear who's responsible for which file? Can you suggest reasonable rules? How about "Changes to English localized files that are used only by a particular module can be reviewed by that module owner or a peer. Changes to files accessed across multiple modules need the approval of a toolkit peer." None of the localized strings I've seen across gecko, except for perhaps parts of PSM, are especially complicated or controversial. Changes to non-English files require approval only from the localization owner. > 2) How is localization of gecko-based non-toolkit (and non-XUL, for that > matter) products handled in the new world? It will be handled exactly the same as today, which involves building seamonkey and subtracting what you don't want. As libxul becomes more solid, most embedding apps (except for minimo) will move to use it. > 3) What's the story on JS engine localization in the new world? The JS engine is currently hard-coded in English in js.msg and I have no plans to change that at the present. If localizers complain, I will discuss the options with brendan. Obviously, since the JS engine is self-contained and cannot load URIs from the chrome registry, our standard l10n mechanism does not work. > using toolkit/ instead of l10n/?" question dbaron raised... Localization of > Gecko proper is not exactly related to xulrunner (see question 2 in previous > paragraph). libxul/xulrunner is the consolidated plan, and its home is toolkit/. "gecko proper" is not a localizable product in itself, and there is no need to invent new top-level directories (The old l10n toplevel dir never worked, because it was only non-English languages and had a different directory structure from the rest of the source tree.) If we try to split the l10n up even farther into "gecko", "toolkit", "app", or heaven forbid try to localize each module individually, you have immediately created a maintenance nightmare. Please take a look at the patch in bug 252941, and imagine that yet again, or even more. (And the SeamonkeyAll CVS module becomes useless).
> Can you suggest reasonable rules? It depends on what the goal is. Based on your comments, it sounds like checking with the module owner before making changes to localized strings for the module is not a design goal of the new system. Should it be? If so, then that needs to be the rule and it should be easy to figure out what module each file belongs to. If not, then are module owners OK with that, generally? > "gecko proper" is not a localizable product in itself I'm sorry, but why not, exactly? For that matter, why's Necko not a localizable product in itself? As I recall, one of the goals there is to have Necko be a reasonable standalone library, the way JS is. If there has been an executive decision that all Mozilla modules other than the JS engine must be available only as parts of xulrunner in a usable form, then I have a lot less of an issue with this change, I guess, and some very public announcements to that effect should happen so that embeddors, Minimo included, won't be surprised when the world suddenly breaks. If not, then it sounds to me like we're digging the "chrome registry being used to localize the world" hole deeper and deeper instead of filling it in (the latter is what hyatt has been advocating for forever, by the way).
> Obviously, since the JS engine is self-contained and cannot load URIs from the > chrome registry, our standard l10n mechanism does not work. The JS engine has an API with which you can configure and pass in callbacks, but alas it seems as thought the way the API was designed (not by me) precludes the core engine calling a per-context callback to get a JSErrorFormatString for a given errorNumber. This is a botch. It can be fixed (bug to be found or filed), and then the higher layer C++ code can configure a C callback that does whatever needs doing. There has been no executive decision to make everything depend on toolkit, or on chrome. There has been no executive decision against {js}, {nspr,js}, {nspr,js,xpcom,xpconnect}, {nspr,js,xpcom,xpconnect,necko+what-necko-needs}, etc. bundles that can be used in addition to libxul. There has been a plan to move toward a libxul/xulrunner pairing, where xulrunner work precedes libxul, libxul has minimal and frozen exports, and xulrunner linked with libxul runs as fast (or within epsilon) of current firefox static builds. This will take time, and we do not want to violate modularity at any point. I would go further, and agree with bz that modularity has a human face, which you might call subsidiarity. Individual module owners should care about l10n, and may well. It should not be necessary to put all modules' l10n info in one CVS subdirectory. It might help localizers to do that, but it cuts against module "home rule". (Long ago, someone argued we should locate all header file sources, or at least all public headers and IDL, under one mozilla/public or mozilla/idl subtree -- that has the same modularity problems, both for code subsetting and for human ownership. I nixed that proposal with only the proposer objecting.) This issue needs to be hashed out in a wider audience. There is probably a good technological fix that balances interests, or even gives module owners and l10n folks "best of both worlds" experiences. If at the end of that discussion we decide to consolidate l10n files, I think we should use mozilla/l10n, not mozilla/toolkit/locales. But we may find a better way. Where should we have the wider discussion? Benjamin, feel free to start it with a cross-posted news message with followup-to: set appropriately. /be
Product: Browser → Seamonkey
Oops, I filed a duplicate with patches and such. *** This bug has been marked as a duplicate of 271324 ***
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.