Frontend transliterator: translit. A battle against the ??????'s

In Wikipedia gibt es eine Tabelle für arabische Zeichen.
Ich kann aber nicht beurteilen, ob die für unsere Zwecke brauchbar ist.

Thank you Walter.

For Georgia there was info in

For place name there is not much to do as mostly all have also name:en or int_name. This is the list of names that were transliterated. The same file is displayed in three difefrent programs (on XP): wordpad, notepad and firefox.

display in different programs

Wordpad does not understand utf8 so it displays all bytes as if they were characters, notepad understand that it is utf8 and converts to the right character but then misses the font. Firefox understands everything (without telling it that it is utf8).

From all programs I copypasted the first three lines to this post. (you never how which conversions are applied using the clipboard).




I would like to see comments on the transliteration results. Someone from Georgia out here?

As reported on the IRC:

For Turkish you would transliterate ö and ü to o and u - not to oe, ue as in German

Yes I do already for Turkish. I did not yet bother for German. But then the 60Cx can display Ü and Ö. Or not rotated?

At second thougth: If in utf8 the Turkish ö is coded with the same byte values as the German ö (and i think that will be the case) then if translit keeps the tables per area then the transliteration could be different. But i think that in short i will do away all areas (the .gpx files) and only use one transliterationtable for the whole world as i do now already for the 's.

About transliterating greek.

In Greece many places have already an int_name or en:name. Whats left are 652 nodes with a place and name tag that need transliteration. Well translit thinks so and it does a transliteration of the utf8 encoded string. If the transliteration result is the same as the utf8 encoded string than the name was already in ansi. Translit counted 559 name’s already in ansi. So only 90 tags were added.

For ways these counts were 7097, 5644 and 1439.

On the maps for greece you can see that very often the name is both spelled in greece and internalional.
Here some transliteration results:

name in utf8 = name transliterated
Άγιος Νικόλαος (Agios Nikolaos)=Agios Nikolaos (Agios Nikolaos)
Ευηνοχώρι (Evinochori)=Euienochori (Evinochori)
Πυλαία - Pylea=Pulaia - Pylea
Μικρόκαστρο (Mikrokastro)=Mikrokastro (Mikrokastro)
Σκάλα Συκαμνιάς=Skala Sukamnias
Λιμένας Χερσονήσου=Limenas Chersonisou
Μαρίες (Maries)=Maries (Maries)
Αναφωνήτρια (Anafonitria)=Anafonitria (Anafonitria)
Βολίμες (Volimes)=Volimes (Volimes)
Άγιος Γεώργιος (Agios Georgios)=Agios Georgios (Agios Georgios)
Αγία Μαρίνα (Agia Marina)=Agia Marina (Agia Marina)
Μονόσπιτα (Monospita)=Monospita (Monospita)
Κορομηλέα (Koromilea)=Koromielea (Koromilea)
Αλίαρτος (Aliartos)=Aliartos (Aliartos)
Βάγια (Vagia)=Vagia (Vagia)
Μαυρομμάτι (Mavrommati)=Maurommati (Mavrommati)
Άσκρη (Askri)=Askrie (Askri)

The weekly updated img files on now contain transliterations for 21 Areas:
albania, belarus, bulgarije, cyprus-turkish, czech-republic, estonia, georgia, greece, hungary, kaliningrad, latvia, lithuania, macedonia, moldavie, poland, romania, russia, serbia, slowakia, turkey and ukraina. Attentioen only 's with a valid place AND a name tag are transliterated when needed. (valid place |town|city|suburb|village|hamlet|).

So for instance in greece

will show up in your garmin as " Agios Nikolaos (Agios Nikolaos). While

will show up as “??? ??? (Agios Andreas)” because it is an island.

I now understand that such a restriction is unwanted. In the next update translit will handle all nodes with a name tag.

greencaps, do you feel confident by now about puglishing your translit program?
Or maybe even adding it into mkgmap?

The program at the moment is restricted to do 's. When 's and 's are also transliterated publication would make sense. Lambertus is the only one who uses (and tests) it. If translit does what I want it to do I will offer it to the community. In which way I still don’t know.

Adding to mkgmap is a different story. I never looked into the source of mkgmap so I do not know in which way the code could be integrated. But of course integration in mkgmap is preferred over functioning as a frontend. An extra option --translit which forces mkgmap to trow away all codepages and just take one transliterationtable (the one from translit for instance) would be nice.

Would it make sense to introduce a name:translit tag for transliterated names and let mkgmap choose one of them, e.g., mkgmap --name-tag-list=name:en,int_name,name:translit,name or (for native users) just mkgmap --name-tag-list=name:translit,name? The transliteration could be implemented as a separate preprocessing step or integrated in mkgmap so that it can be executed on the fly, when a substitution of name:translit is requested.

ISO 15924 and IANA define some language subcodes, such as sr-Cyrl and sr-Latn for Serbian written in Cyrillic or Latin, but I did not find any subcode for transliterated Russian or Greek, for instance. We could of course invent such codes ourselves, but it could be controversial to add, say, name:gr-Latn and name:ru-Latn to each Greek or Russian location in the OpenStreetMap database. (It could provoke edit wars, because not everyone is following the current version of ISO 9.)

Thats exactly what happens in Lambertus’ toolchain. The tag is added by the frontend.

Yes. Transliteration and adding the tag. But all depends on the structure of mkgmap.

I will not look at that to much.

This pictures shows, that the Nuvi 250 is not able to display utf-8 characters,
but to show lower-case characters.

Map has been build with --charset=utf8 and --lower-case

On MapSource I see the same characters.

The funny thing is, this actually don’t looks like utf-8 at all.

But when I use some unknown charset like --charset=xyz, it looks more like utf-8
(but the device is still not able to display them).


And this is the build in transliteration in action (only --lower-case option was set).

(MapSource screenshot)

My first thougth was : who says that there are utf8 chars in the map?

Ahhh. You said that --utf8 was no option. But I had to read it as : use --charset=utf8
So mkgmap can make those .img’s. Nice, I hope it just transfers the text untouched.

Well actually it does. That looks exactly like the chars in the transliteration table for greece that I use. See here some characters (copied from wordpad): look at tke leftmost column.


And the same displayed by firefox and copied from it.

The Nuvi displays utf8 with a normal ansi charset (for one byte chars). On the nuvi screen there are 28 character. Those are 14 utf8 characters. Using my transliterationtable i come to Mikala… And looking at openstreetmap that is right.

Additional Info: For testing I used the name_tag = name, name:en sequence
in the options file.

When building real maps of couse you would first check for the
english names.

name_tag = name:en, name


Ok, but what does mkgmap do when using a unknown charset like --charset=xyz ?

I would have expected that in this case no charset translation takes place and because the input
data is utf-8 the output also should be utf-8.


Don’t know. Until now I never used mkgmap so I cannot test. But it should bring an errormesage and stop.

Or nothing put out or only ???'s. Because thats in line whith what mkgmap does now.

Further my opinion is that if a parameter --charset=… is omitted the output should be utf8 (and only then). Exactly the same content as in the osm tags. (–charset=utf8 is confusing as no charset will be used. So this should bring an errormessage too and the program should stop, not even start.)

That looks ok. So your claim is that the cyrillic from Bulgaria is correctly transliterated too (in that same .img)?

Ok, here we are. Sofia compiled with only --lower-case and name-sequence again
is name, name:en, so first taking the lokal name.


Thank you for the effort Chris. I see the transliteration. Ok. But you left me unsure as you did not utter a direct “yes” or “no” on my question if both cyrillic and greek are transliterated within one map. (or run of mkgmap).

I would like to know also if georgian, arabic, chinese and so are transliterated. Dou you know what all is transliterated?

The battle is in a decisive stage. Look at the cyrillic in the center of Irkoetsk, Siberia:

Yesterday tile 63340555 on from Baikal region and Mongolia looked like this in GPSmapedit:

Today (after a special update) it looks like:

Gone are the questionmarks.

Translit now transliterates all items that have a name tag. So nodes, ways and relations. (But only if there are not already tags like name:en or int_name. It adds an extra tag with the transliteration. It only uses one transliteration table with less then 400 entries. It does not use regions or .gpx files anymore.

When I drive to Siberia again this summer my 60Cx will show all placenames and in towns all streets. I’m happy.

So very cool :slight_smile:

Thanks for you work on this!