[OpenLayers-Dev] status of translation possibilities

Gertjan van Oosten gertjan at West.NL
Sat Oct 20 13:02:15 EDT 2007

As quoted from Lourens Veen:
> I haven't followed this thread that carefully so maybe it has come up
> already, but what about number formats? OL's current scale display uses
> K and M for thousands and millions, which is not how it's commonly done
> on paper maps. I'd really rather have it write out the full number, but
> of course it would then have to use a number format that is appropriate
> to the locale. In Dutch, I would like it to say 1:50.000, while in
> English that would be 1:50,000.
> If you're designing i18n anyway...

Well, strictly speaking you're talking about L10n (Localisation).

That's currently beyond MapBuilder's reach, as you would need locale-specific
formatters for that (date, numbers, money).  It is doable; some JavaScript
classes to do this may be available out there.  I haven't taken the effort
to integrate them into MapBuilder though (not enough demand).
Once you have these L10n classes, fitting them into the i18n framework is
easy, as I will show below.

Let's say we start out with:
  var msg = "Scale 1:" + map.scale;
which (if map.scale==25000) would give us "Scale 1:25000", in any language.

Say the message key "mapScale" maps to the message format string "Scale 1:{0}"
in English or "Schaal 1:{0}" in Dutch.  After the I18n step it would be:
  var msg = OpenLayers.String.format("mapScale", msp.scale);
which would give "Scale 1:25000" in English and "Schaal 1:25000" in Dutch.

If we then add L10n, e.g.:
  var formattedNumber = OpenLayers.Something.DecimalFormat(map.scale);
would return the number formatted according to the proper decimal format
for the current locale, e.g. #,### for UK or #.### for NL.

Combining the two:
  var msg = OpenLayers.String.format("mapScale", formattedNumber);
would return the I18n'ed message, and since the formattedNumber is L10n'ed,
the resulting message would be say "Scale 1:25,000" in English and
"Schaal 1:25.000" in Dutch.

As you see, I18n and L10n are quite complementary.  So the two could be
implemented separately (and could even have separate RFC's, which has my

-- Gertjan van Oosten, gertjan at West.NL, West Consulting B.V., +31 15 2191 600

More information about the Dev mailing list