[OpenLayers-Dev] status of translation possibilities

Lourens Veen veen at science.uva.nl
Sat Oct 20 15:28:52 EDT 2007


On Saturday 20 October 2007 19:02:15 Gertjan van Oosten wrote:
> 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 not quite how I thought the terms were used, and Wikipedia seems 
to agree with me. Adding the capability for numbers to be formatted in 
different ways is i18n, adding specific number formats for certain 
locales would be L10n. Not that it affects the technical argument :-).

> 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 preference).

Sounds good to me. Unfortunately I have no time to work on it myself at 
the moment, but I thought I'd mention it in case your tuits were round 
enough.

Lourens

-- 
          ir. Lourens Veen          University of Amsterdam - IBED
                                    Nieuwe Achtergracht 166
    Scientific Software Engineer    1018 WV Amsterdam, The Netherlands
             EcoGRID-GAN            t: +31 20-5257453  f: +31 20-5257431



More information about the Dev mailing list