Multi-lingual rendering of Thailand


some saw it already in the past, I thought it might be useful for all.

I have a map of Thailand that renders street names either in Thai script, in English or in a combination of both.

This could be useful for visitors to Thailand not being able to read Thai as well for mappers trying to complete the name:en and name:th tags.



Looks great. Especially in Khon Kaen where almost all is mapped using name and name:en.

Some suggestions

  • Call the layers “Local language”, “English” and “Bilingual”.
    This works also in other countries, e.g. Laos, especially Vientiane, which is perfect.

  • In the bilingual map:


  • There shouldn’t be parenthesis around the english name.

  • Names of nodes and areas should be on top of each other.

  • Names of ways follow already each other along the way but should be separated by a gap (not parenthesis).

  • If name:en is the same as name it shouldn’t be repeated, e.g. Malaysia.

[/*] [*]May be a country using roman letters get rendered too, where only some major places are tagged with "name:en"[/*] [/list]

Thanks to webrian Laos provides also switching languages: Laos project map, under construction, use Firefox browser.

Hopefully this feature will be introduced for the map at
This would motivate mappers to tag worldwide “name” in local language and also “name:en” if the local language doesn’t use roman letters.
Google maps are already bilingual: Bejing, Google Earth partially. Being able to switch the language OSM would be a step further.

Have done that. Hope that Mapnik does a good job in placing the label right. I also changed the rendering in a way that names that are not in local language (name=name:en) are not repeated in bilingual maps. Thanks for the hint. You might need to fore a reload to see the changes.

This is an issue with the underlying data or with some Mapnik rules. Can you give an example? Often this is caused by people “mapping for the renderer”. Eg by placing a node inside an building area because mapnik did not render some icon. As mapnik is later changed this results in some duplicate rendering.
Having an example should help identifying the problem.

I don’t understand that point. Are you referring to Thailand? I don’t think so. Please give an example.


Thanks for the improvements. Looks much better now.

Sorry, wasn’t clear enough. I didn’t mean duplicate names. In my opinion for nodes and areas it would look better to write in two instead of one line, e.g.:

 ขอนแก่น              โรงแรมพูลแมน
              and                             instead of   "ขอนแก่น  Khon Kaen" and  "โรงแรมโรมา  Roma Hotel"
Khon Kaen            pullman Hotel

As far as I see only Thailand and parts of the neighbour countries are rendered. I think it would be interesting to see how e.g. the map of multilanguage countries like Switzerland or Luxembourg looks like having the same language layers.

This is a problem with Mapnik, that’s the software used to render the map. I opened a ticked and talked a bit with the developers. I hope they get it working, then this can be done.

I can extend the bounding box. Actually it was only thailand at first. The bounding box is applied when updating the database. This can only handle rectangular bounds. I would have to clip everything outside the Thailand polygon from time to time.

I wanted to re-use the data to do some special rendering for Thailand especially missing names. In case I include too much of Laos, etc this will be rendered as missin Thai as well.

Please let me know if there is a need to see laos, etc as well.

Regarding European countries: The basic principle is the same. But you would not use name:en as the second language.


Good news, everyone!

After a longer chat session the Mapnik issue is resolved. The bilingual maps render the Thai names in one line, then the English names. Always assumed there are both languages and there is actually space on the map for the label.


Wow, that’s really great.

Looks good at all zoom levels I tried in Khon Kaen. Many thanks to all who contributed to this enhancement. Only here and at zoom level 15 I found nodes rendered the old way, may be still old tiles: e.g. the nodes “Khon Kaen Railway Station”, “Ban Ru Plaeng Mo”, “Ban Su Pacha Ri”, “Piman Buri”, “Piman Place”.

I’m looking forward to see language switching at too.

Could be extended to other areas using non-latin characters, i.e. most of Asia and also Europe including the large countries China and Russia. May be it’s better to label the choices “Local names”, “Romanized names” and “Local and romanized names” or “Combined names”. It’s not about language really. It’s about letters. This would be even more accurate. It’s only sometimes a translation and the romanization isn’t done always according to English rules. In Thailand it was but is changing now. Making available and announcing this great feature to the international community would lead to contributions of mappers of other “non-latin countries” and motivate them even more to tag “name” and “name:en”. “name:en” should be better called name:romanized. But obviously this discussion is stuck and didn’t come to a result yet.

I deleted all old tiles on the server. In case there is somewhere still the old style please fore a reload. They might still be in your browser cache.

In case there is a demand for it I can render more of SEA. For Laos there seams to be already a server providing maps. So maybe not needed. I’m open to requests.

name:en is the English name.

Fortunately most times this is the same as the romanized form of the Thai name.

I think on the naming discussion we agreed on that. Maybe it was not agreed but we just stopped talking :wink:

As the romanized form of a name can be generated by a program it’s not needed to store this in the database.
My server is using linux. So I would need a program that can do the romanization on linux. I only have a windows tool. I will open another thread as this a different topic.


Christmas gifts for the community. received some improvements:

  • The rendering style was updated to the most recent version available on the osm main site.

  • The area covered now includes not only Thailand but also complete coverage of Laos, Vietnam and Cambodia.

The bilingual map received further improvements:

  • It now uses a different font to improve readability of Thai names.

  • It is possible to zoom in one more level (Z=19) than the official map. This gives enough space on the map to show names of POIs in densely mapped areas.

Enjoy mapping…

Thanks for the improvements.
With zoom=19 more housenumbers are shown, e.g. here.

Thank you< also from here!

Are there any plans to get that integrated in official sites (* Somehow that should not be “hidden” but visible for anybody.
And that would make ppl much more relaxed about the famous question of what to write in name, name:en, int_name, etc. :wink:


Please feel free to advertise this Thai map.

It will not be implemented on now or mid-term.
One of the tickets that suggested this and got rejected:

Wikimedia runs the toolserver that renders multiple language layers as an alternative source fur multi-lingual rendering. Slightly different approach than my site.

So right now we have our own rendering that even provides additional benefits over the osm site by extending to zoom 19


To check my mapping now I only use the bilingual map. It shows the names in two languages and the font is much better. Usually changes are rendered within minutes after submitted. I noticed two points.

At this location water on the left and wetland on the right side which are of about the same size are rendered at zoom level 13. At the zoom levels 12 to 9 only the water is rendered. Is this a fault or intentional?
Water and wetland, another example.

At that location I deleted a node “temple” at a wrong place in the lake and replaced it by a multipolygon “temple”. The deleted node is still on the thaimap but not on openstreetmap anymore. I made several times a “dirty” request and the “status” got updated.
Temple on thaimap and on openstreetmap.

Thank you for the notice. The server is using the osmosis minutely-replication system. Usually changes should appear within five minutes on the map. If it does not it could be that your browser or proxy server still has a cached copy of the old image. Try to open only the image and do a “shift-reload” to force a reload.

In case this does not help and also marking the tile as dirty on the server is not helping there is a problem on server side.

I will have a close look at your example to track down the problem.


Hi Willi,

I can confirm the database contained wrong data. That node was deleted Sun, 24 Jul 2011 20:53:37. According to the munin stats there had been an issue with the database update during that time. In theory it should not affect data consistency. Looks like practice proofs theory wrong.

I’m currently re-applying the updates of last month. Database should be up-to-date in a few hours.
Please let me know if you discover more problems. And don’t hesitate to mention them earlier :wink:


There still seems to be a problem. I deleted the duplicate housenumber 555/95 and about one hour later I corrected the housenumber 555/101. At the correction is reflected but the deletion isn’t. At both are reflected. Several “/dirty” up to 40 minutes after upload didn’t cure the situation.

I was able to reproduce this. It’s all because of a bug introduced in osm2pgsql in end of may. When using it together with a bounding box (I’m doing it) this leads to deleted nodes not correctly replicated.

I have now two options. One would be to replay all deletions from June onwards, the other a complete re-import of the database. The replay could work and be faster but it would miss nodes being deleted and later restored. Not sure how many of these would be in Thailand.

So best option certainly is a re-import. With a re-import I can also switch to the database scheme that works without intarray. This is the system used by the main branch of osm2pgsql.

Please expect a stop in tile-rendering the next days. I’ll announce it on the main page once I start the re-import and once I’m done with it.

Sorry for any inconvenience and thanks to Willi for reporting this problem.


This node landuse=commercial is shown on at zoom 15 to 18.
On it is shown at zoom 15, 16, 18 and 19, but not at zoom 17. The status was okay: “Tile is clean. Last rendered at Thu Nov 10 14:00:44 2011”. A “dirty” 19 minutes later didn’t cure it.

It’s a bit strange. I can only guess what is going wrong here.

I suppose it’s related to mapnik’s painter algorithm. It placed already the highway shield. So not enough space to render the name of the node. Using landuse on single nodes is uncommon, but unrelated to the problem.

Mapnik could be clever to move the shield a bit, but I think that is not yet implemented. At SOTM-eu there was a talk from someone of the mapnik team who is working on such smarter label placement.

So sorry, you have to live with things like this until mapnik is improved.


I see some wrong rendering with thai vowels here:

“สีวลี 01 Siwalee 01” can be a reference for correct rendering, but the rest from “สีวลี 03 Siwalee 03” to “สีวลี 10 Siwalee 10” vowel _ี (Sara Ee) is misplaced. _ี (Sara Ee) should be normally placed above ส (So Suae) and ล (Lo Ling) to make “สีวลี” readable.