Ryan Dew wrote: > Those are interesting enhancements. I don't think it would be > hard at all to extend it to support injection of numbers or > words. Simply have the map entry contain an additional element > that ties itself to a position in a sequence of items passed > and replace it appropriately.
The problem is that the position itself could be dependent on the locale :-) > To be honest, I have no idea how I would address singular/ > plural forms. It seems like that would have to be handled > externally and the bundle would just need separate keys in a > bundle for singular and plural forms. If you have any > suggestions, I would love to here them. The approach I used a few years ago (God, that was in 2005 actually, time's flying :-P) is described succently there: http://xsl.markmail.org/thread/zg4irqyap5begxmc Basically it uses XML to express a kind of format string, instead of simple strings, and use elements as placeholders. It also had more sophisticated features for some domain-specific formatting, like formating a "person" using a format string, to have different address or name formatting. But the general idea is something like: <i18n xml:lang="en"> <l10n key="some.key">The amount is <amount/>.</l10n> </i18n> <i18n xml:lang="fr"> <l10n key="some.key">Le montant est <amount/>.</l10n> </i18n> The place where the text must appear (the "caller") must provide a value for the place holder. This value can itself be locale-dependent (e.g. different numbers formating, in EN you use "." as the decimal point and in FR we use ","). This example is very simple and could be resolved by using simple strings and by having the caller assembling them, but in some cases if you have 2 variable parts A and B, in one language you will have part A appearing before B and in another language B appearing before A. With such a "template" format each localization can reorganize itself the variable parts. For variable parts that are themselves dependent on some dynamic values, the part can be a sort of a map: <i18n xml:lang="en"> <l10n key="...">The book contains <number/> <sections sg="section" pl="sections"/>.</l10n> </i18n> <i18n xml:lang="fr"> <l10n key="...">Le livre contient <number/> <sections sg="section" pl="sections"/>.</l10n> </i18n> The caller has to define that he'll pass a value for "number" (most likely a number) and a value for "sections" (either "sg" or "pl" to select the singular or plural form). The result is a more-or-less readable sentence with elements for variable parts. This is just my recollection after several years, and the solution is probably not perfect, but it gives more flexibility to people localizing the keys, and developers internationalizing just have to define the different keys and the name of the variable parts if any. Regards, -- Florent Georges http://fgeorges.org/ http://h2oconsulting.be/ _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
