Each key should be the URL of a bundle. Then the service will return you an implementation of the nsIStringBundle interface that under the hood merges all the bundles for you. So this way, one can simply add at runtime a new bundle and a regitry entry for it and thus add new values for the ESB by simply extending it, instead of patching. We will use the Java property file format. Note that the order of subject, verb and object in a sentence depends on the language, and that it is better to use numbered arguments if using printf-style formatting .
Language is lower case, and country is upper case.
We are considering writing a tool to migrate some of the strings from the old versions of the product. This tool would also generate some info that a leveraging tool could use to reuse the translations of the old versions. This would certainly work for all the strings in the old allxpstr.h. This needs to be investigated. It should be possible to write a tool that works with a file format that gives us groupability and insertability, while retaining speed and compactness in the code.