Preslovljavanje (Transliteration)

Za potrebe JOSM dodatka, ICU4J bogami možda odradi posao [1]. Proverio sam, i sledeći kod radi:

import com.ibm.icu.text.Transliterator;

class Translit {
    public static void main(String[] args) {
        Transliterator t = Transliterator.getInstance("Serbian-Latin/BGN"); //from getAvailableIDs()
        String result = t.transliterate("ЊЕГОШ Његош");
        System.out.println(result);
    }
}
$ javac -cp icu4j.jar Translit.java
$ java -cp .:icu4j.jar Translit
NJEGOŠ Njegoš

E sad, manji je problem što je icu4j.jar ‘težak’ skoro 7Mb, ali izgleda postoji mogućnost modularizacije [2].

[1] http://icu-project.org/apiref/icu4j/com/ibm/icu/text/Transliterator.html
[2] http://userguide.icu-project.org/packaging-icu4j

Sto je problem sto je icu4j.jar tezak 7MB?

Погледајте Филипов пресловљач на http://sr.wikipedia.org/sr/Википедија:Помоћна_оруђа . Урађен је у Јави и под GPL лиценцом је што значи да би могли да дођемо до његовог кода. Немам времена да контактирам Филипа, али то би могло да нам значи поготову, ако сам добро видео, што може да се избори и са римским бројевима.

На жалост само пресловљавање нам је најмањи проблем. Мука је све оно испред и после тога.

Da, natrčao sam i ja na njega pre dosta vremena [1], mogla bi biti lakša varijanta ako se može razdvojiti lako od svog GUI-ja.

Stranica trenutno ne radi, evo poslednje arhivirane: http://web.archive.org/web/20080115201128/http://filip.zbrka.net/java/transliterator.html

[1] http://nasepismo.blogspot.com/2007/07/java.html

Ако је тачно да је први корак најтежи и да су сви остали сумирање претходног, онда је нама највећи проблем да направимо форк TagEditor-а . Код је доступан, и изгледа да се активно одржава, па “само” треба да научимо како се компајлира.

https://github.com/openstreetmap/josm-plugins/tree/master/tageditor
http://svn.openstreetmap.org/applications/editors/josm/plugins/tageditor/

Ако успешно одрадимо овај форк прављење скрипти за тоталну аутоматизацију би требало да буде лак посао.

Ја сам у страшној гужви и нећу скорије моћи да посветим више времена за ову проблематику, па има ли још заинтересованих да се упусте у овај посао?

Meni se ovaj TagEditor čini malo kao overkill… Ili bi trebalo počupati dosta iz njega, ili da se krene ispočetka?

Милоше, да ли овај пост значи да си спреман да учестувјеш у изради плагина?

U okvirima svojih mogućnosti i sposobnosti (skoro nula iskustva u Javi), naravno.

Форкнуо сам TagEditor и моћи ћу да се направим плагин по жељи.

Онда да кренемо редом. Треба разрадити алгоритам за аутоматизацију пресловљавања пошто сада имамо доста тагова. На пример, ако имамо ситуацију

  1. ћириличан назив у тагу name онда додати/променити остале тагове на основу овог назива
  2. латиничан назив у тагу name и није дефинисан name:sr онда додати/променити остале тагове на основу тага name
  3. латиничан назив у тагу name и дефинисан name:sr онда додати/променити остале тагове на основу тага name:sr

Врло је важно да сагледамо све могућности правилно да бисмо избегли касније проблеме, рецимо у варијанти 3 ако неко исправи таг name био би проблем шта се на основу чега попуњава. Ако се транслитерација ради на основу латиничног назива онда постоји могућност да је транслитерација погрешна - што је мало незгодно за потпуно аутоматизован бот.

Како ћемо да размењујемо фајлове?
Плагин је почео да даје неке резултате, па сада треба да се договоримо шта треба да ради. Још је рано да га стављам у SVN па да видим ко ће и како ће га тестирати.

To sam se i ja pitao. Ako se baviš razvojem, da nemaš već neku svoju riznicu tipa GitHub, Gitorius, Berlios, Sourceforge, Google Code…?

Ako ne, možda Dropbox nije loša alternativa za sada?

План је да плагин иде у званичан SVN репозиторијум JOSM-a чим буде бар колико - толико тестиран. У међувремену ћу сам да се организујем за хостовање. Дакле, за тестере плагин се налази на:

http://mpele.co.cc/osm/serbiantransliterator.jar

Ако би неко да помогне око кода (што бих баш ценио) нека се јави па да и њега објављујем.

Упутство за инсталацију на дну странице http://wiki.openstreetmap.org/wiki/JOSM/Plugins .

Рад са овом верзијом плагина је једноставан. Селектују се објекти који желе да се обраде и стартује се плагин. Појавиће се нов прозор са табелом у којој се налазе предлози за поједине тагове (објекти који немају таг name неће бити обрађивани). У табели директно исправити шта треба да се исправи, или уклонити ред уколико се не жели мењати тај објекат и притиснути ОК. Измене су директне и не иду преко Undo/Redo система.

Програм је сиров и поента његовог објављивања у овој фази је да се покрене дискусија како да се врши пресловљавање.

Hi Pedja

Please find below my observations. Hope you find them helpful.

  1. It is bilingua,l “edit nazivi” for example
  2. the window is not attached to JOSM and is not in the task bar. Switching to another window like Firefox and back would make the tool unusuable until JOSM is restarted
  3. Since it is not really a name:en i.e. english name, I would rename or leave it. Garmin can deal with special Serbian/latin characters.
  4. Although you can mark more than one column, you can only delete one
  5. having a name=Todora Milovanovića (Тодора Миловановића) results in a name= and name:sr= having the value Todora Milovanovića (Тодора Миловановића), name:sr-Latn =Todora Milovanovića (Todora Milovanovića) and name:en=Todora Milovanovića (Todora Milovanovica). Please note that one ć was replaced with c in name:en
  6. It is crashing quite often but I am sure, you know that and you are working on it

Thanks for your work

Hi Thomas,

I have just updated plugin and now it uses modal window. It worked normally on my machine (debian) - what OS are you use?

The “official” decision is that tag name:en should be there. That note should be discused in topic http://forum.openstreetmap.org/viewtopic.php?id=15632.
Do you have some experince with osmand? It renders names ok but not all are searchable.

Spliting cyrilic/latin names are not yed done. The output is expected because the name is recognised as cyrilic and only cyrilic letters are “transliterated in english”.

The code should be relatively stable now. If you start JOSM with command

java -jar josm-latest.jar

there should be some output from plugin that can help in locating problem. I have noticed that “PLATO” with omega crashes program but I hadn’t time to see what exactly is the problem.

Thanks for testing,
Pedja

Yes, it is working fine now. I am using Windows 7 right now but can test in Windows XP too. Debian is headless and without X here.

Sorry, but I do not agree. It is quite clear what an english name. i.e. name:en is. It is not a latin Serbian name without special characters. Good example is Belgrade (en) Beograd(serbian/latin). If you think that I am wrong, please ask the people from the UK. You don’t want that outside people decide about name:sr so give other the right to decide about their own.

Not yet, but some Android devices here. I can test with a Garmin outdoor device (Oregon) and a car GPS navigantion (Garmin nüvi 1390T http://www.amazon.com/Garmin-4-3-Inch-Widescreen-Bluetooth-Navigator/dp/B001U0O7RG/ref=sr_1_1?ie=UTF8&qid=1331239300&sr=8-1 )

:slight_smile: Looking forward to sort out Nis :slight_smile:

It does not matter what command I am using. I am using java -Xmx3500M -jar josm-tested.jar. However, your plgin requires a minimum version of XX (can’t remember, I had to upgrade to a very recent version). Is it necessary to limit it to very recent JOSM versions?

I have now another problem. The plugin is in Serbian only. I don’t want you to make it multilingual. But I can’t copy and paste the words from the buttons to google translate. There are not to much words, would it be possible to have OSM/Wiki-page with a very short translation? Maybe with a link in the plugin so that foreigners are also able to add names?

One thing…It is fine to answer in Serbian, I am just a guest here.

ist it possible to test the names if there is a letter in name= which indicates that it is not Serbian? It produces not valid results if German names with letter “ß” are used name:sr=Адлерстраßе, name:sr-Latn=Adlerstraße
This is not a big deal but there are also Hungarian street names in OSM Serbia, which would be messed up like this one: name=Petöfi Sándor utca, name:sr=Петöфи Сáндор утца, name:sr-Latn=Petöfi Sándor utca

Pedja, evo uspeo sam i ja da poteram dodatak, evo par zapažanja:

  1. Slažem se sa Tomasom, sučelje treba da je na engleskom, lakše je posle dodati srpski koristeći i18n klasu

  2. Pritiskom na ‘Učitaj’ je moguće beskonačno dodavati isti objekat, ne bi bilo loše vršiti proveru da id bude jedinstven u tabeli

  3. Ja bih uklonio mogućnost ‘Učitaj sve tagove’ - em ne radi (dobijem neki dugačak niz s kojim ne znam šta ću), a i ne vidim neku korist u budućnosti?

  4. Možda stvarno ne bi trebalo da diramo name:en (ili da ostavimo isključeno kao buduću opciju?). Diskusija u drugoj temi je bila kako bi otprilike trebalo da izgleda, ali možda ne moramo niti treba da generišemo automatski?

  5. Ako zatvorim pa ponovo otvorim prozor, dodatak izgleda prestaje da radi kod mene (Win XP, JRE 1.7, JOSM 5049), npr. ‘Učitaj’ ne reaguje

I ja mislim da name:en ne treba da se generise automatski, vec samo rucno, tamo gde stvarno postoji naziv na engleskom. U suprotnom bi gomilali netacne informacije…

Natrčao sam i na grešku. Npr imam par ulica sa ‘name=latinica’ i ‘name:sr=ћирилица’, izaberem ih sve, pokrenem editor, izaberem CIRILICA kao podrazumevano, kliknem ‘Učitaj’, i u tabeli stvarno sve izgleda savršeno. Međutim, kada kliknem ok, dobijem

name=latinica
name:sr=latinica
name:sr-Latn=ћирилица