Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transliteracija iz latinice u ćirilicu? #1

Open
pedjas opened this issue Jun 27, 2023 · 6 comments
Open

Transliteracija iz latinice u ćirilicu? #1

pedjas opened this issue Jun 27, 2023 · 6 comments

Comments

@pedjas
Copy link

pedjas commented Jun 27, 2023

Hoće li biti dodata opcija da se radi transliteracija iz latinice u ćirilicu?

@eboye
Copy link
Owner

eboye commented Jul 17, 2023

To je gotovo nemoguće.

recimo dj nije uvek ђ u recimo reči djed i sl. Iz ćirilice u latinicu je daleko sigurnije. Takođe i strane reči bi onda preslovljavao u ćirilicu i onda qwy i sl. bi ostalo u latinici ... gomila problema.

Ako neko ima ideju kako da se to implementira sigurno, otvoren sam za predloge. Ali po mom mišljenju nije vredno truda.

@eboye eboye closed this as completed Jul 17, 2023
@pedjas
Copy link
Author

pedjas commented Jul 17, 2023

Znam. I ja sam pravio razne transliteratore. Naravno da ne može da uradi 100% ali je velika stvar ako uradi onih 99.9%. podrazumeva se da onaj ko korsiti tvoj dodatak mora da pregleda tekst i dotera ako nešto nije u redu. Nije ovo totalno automatizovana transltieracija na kojoj niko naknadno ne intervenise.

U većini slučajeva gde se ovaj tvoj dodatak upotrebljava, verovatnije je da će da posao završava i 100%.

Dosta slučajeva kada je transliteracija dvosmislena može da se reši podešavanejm izuzetaka unapred.

Mogu da ti pomognem oko toga. Ono što sam ja radio je i PHP ali je princip, sigurno primenljiv i u ovom slučaju.

@eboye
Copy link
Owner

eboye commented Jul 17, 2023

Pa ajd, daj neki primer koda u PHP-u, lako se to pretaba u JS.

@eboye
Copy link
Owner

eboye commented Jul 17, 2023

Dodao sam opciju, ali ne preslovljava dobro ... ja sam prvobitno radio za svaki član niza da konvertuje iz liste, ali je bilo jako sporo pa sam prebacio da ide slovo po slovo da bi radilo instant.

Zapravo bi trebalo da se ne radi split sadržaja texta nego cela reča pa sa .replace, ali kao što sam rekao biće dosta sporo. Tačnije ako je stranica velika zna browser kompletno da se zapuca na slabijim mašinama. Ali eto, barem nešto :D

e2590eb

@eboye eboye reopened this Jul 17, 2023
@pedjas
Copy link
Author

pedjas commented Jul 19, 2023

Da, tako sam ja radio, imam niz u kome su pojedinačna slova ali mogu da budu i više slova i onda sam naveo kombinacije slova kada se dj ne preslovljava u đ na primer...

Pogledaj ovo što sam nekad davno napravio: https://ult.datavoyage.com/


Ako ti je sporo da radiš sa rečima, onda napravi dva niza, Ostavi taj za konverziju pojedinačnih slova jer je brz, i napravi dodatni za konverziju reči, i kombinacija slova. Izuzetaka ima malo tako da će i to što sporije radi sa rečima biti manji problem.

Baš sam juče prebacivao jedan tekst sa latinice na ćirilicu i to je čak bila mešana ijekavica i starinski govor sa sve 'ođe', 'đe ćeš' i slično. Naravno da sam morao da ga ručno pregledam i sredim ali je mnogo toga moglo da se reši unaped programski, da se uštedi vreme.

Kada radiš preslovljavanje prvo radi reči i delove reči. Pa kad njih uradiš tek onda pusti konverziju svih slova. Kada uradiš izuzetke prvo onda ti ostaje čist tekst u kome slobodno možeš da radiš preslovljavanje slovo na slovo.

Ako reč sadrži bilo koje slovo koje nije iz naše abecede onda celu reč ostavi kako je, jer to verovatno strana reč i ne treba da se prebacuje na ćirilicu.

Doduše, ja sam u rečnik stavljao da se na primer Windows preslovljava u Виндоуз. То ти омогућава она табела речи. Не мора да садржи само изузетке за наша слова, него и стране речи које треба транслитеровати по нашем правопису, или комбинације речи који се често појављују

Takođe ćeš naići i na slučajeve kada je latinično slovo koje je digraf na početku rečenice pa i to treba predvideti.

Treba verovatno da imaš i mogućnost da naznačiš da li je pravilo cela reč ili deo reči. Na primer 'anjon' se preslovljava u 'анјон' ali se 'kanjon' preslovljava u 'кањон'. E sad ima smisla da se to tretira kao delovi reči, jer ti rešava gomilu slučajeva sa padežima, množinom i jedninom, rodovima i slično, da ne moraš za svaki oblik da unosiš pravilo.

Možda da u pravila uvedeš oznaku za početak reči, pa ako pravilo sadrži tu oznaku, onda tražiš taj niz slova samo na početku reči. Tako će ti pravilo '^anjon' rešavati slučajeve 'anjon', 'anjona', 'anjoni', 'anjonom' i slično ali ne i 'kanjon' i bilo koju drugu varijantu sa tim korenom.

"одје", "vdje" => "vдје", "vanjez" => "ванјез", "^anjon" => "анјон", "Microsoft" => "Мајкрософт", "Windows" => "Виндоуз", "New York" => "Њујорк", "Viena" => "Беч", "email" => "имејл", "Linux" => "Линукс", "Dj" => "Ђ", "Lj" => "Љ", ); ?>

Možeš da predvidiš i opciju da prilikom preslovljavanja korisnik navede da li hoće da dj preslovljava u ђ. U ijekavici se to ne radi, a u tom slučaju, u tekstu đ mora svakako biti zapisano kao đ a ne dj.

Možeš i da napraviš opciju da korisnik sam dodaje izuzetke, kad naiđe na njih, a i da te izuzetke pošalje tebi da možeš da ih ubaciš u dodatak.

Možda je najprostije da pravila preslovljavanja budu u json formatu tako da ih je lako ažurirati i distribuirati.

Sad mi pade na pamet da možda pravila za preslovljavanje okačimo u json formatu na github, tako da ko god se bavi ovim problemom može da dodaje pravila i izuzetke. Ja bih onda napravio PHP biblioteku koja će da koristi ista ta pravila. Neko treći može da to uradi za druge platforme. To bi bilo baš moćno i vrlo korisno.

Kao što rekoh, izuzetaka ima malo. U stvari ćeš imati više stranih reči sa specifičnim preslovljavanjem u ćirilicu nego samih izuzetaka u na srpskom jeziku.

U stvari listu stranih reči sa preslovljavanjem je možda bolje da imaš kao odvojen niz da bi korisnik mogao da bira da li hoće preslovljavanje takvih reči ili želi da ostanu u originalu, pošto je i jedno i drugo realna potreba.

Погледај и https://extensions.libreoffice.org/en/extensions/show/oootranslit. Он ради прилично добро. U njegovom sorsu ćeš naći dosta izuzetaka, kao na primer:

strIZ() = Array("тањуг", "Тањуг", "аџиве", "наџе", "оџиве", "оџвака", "оџури", "џубори", "оњукциј", "оњугациј", "њукциј", "њекциј", "ТАЊУГ", "НАЏИВЕ", "НАЏЕ", "ОЏИВЕ", "ОЏВАКА", "ОЏУРИ", "ЏУБОРИ", "ОЊУКЦИЈ", "ОЊУГАЦИЈ", "ЊУКЦИЈ", "ЊЕКЦИЈ", "АЊЕЗИЧН", "ањезичн")
strU() = Array("танјуг", "Танјуг", "адживе", "надже", "одживе", "оджвака", "оджури", "джубори", "онјукциј", "онјугациј", "нјукциј", "нјекциј", "ТАНЈУГ", "НАДЖИВЕ", "НАДЖЕ", "ОДЖИВЕ", "ОДЖВАКА", "ДЖУРИ", "ОДЖУБОРИ", "ОНЈУКЦИЈ", "ОНЈУГАЦИЈ", "НЈУКЦИЈ", "НЈЕКЦИЈ", "АНЈЕЗИЧН", "анјезичн")

Primeti da je Uroš prvo radio slovnu transliteraciju pa onda u rezultatu tražio neispravne reči i vraćao ih u ispravan oblik. Ne znam što je tako radio, al radi mu posao.

@pedjas
Copy link
Author

pedjas commented Jul 19, 2023

E da, trebalo bi da iam opcija da se radi preslovljavanje samo označenog tekst na stranici, ne uvek cele stranice. To je u stvari najčešće potrebno, bar meni.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants