[ EmmaR @ 11.11.2015. 13:05 ] @
Da li moze iz JavaScript-a ili PHP-a da se identifikuje koji je trenutni raspored tastera na tastaturi (keyboard layout) i kako?
[ jablan @ 11.11.2015. 15:05 ] @
Ne. Za šta bi ti to uopšte služilo? Bilo kako specijalno ponašanje u zavisnosti od trenutnog rasporeda bi bilo loša ideja, sa stanovišta usability-ja.
[ EmmaR @ 11.11.2015. 16:35 ] @
Citat:
jablan: Ne. Za šta bi ti to uopšte služilo? Bilo kako specijalno ponašanje u zavisnosti od trenutnog rasporeda bi bilo loša ideja, sa stanovišta usability-ja.


Da prepozna koje je pismo upotrebljeno za unos u polje, grubo receno: Da razlikuje cirilicu od latinice. Mozda sam pogresno postavila pitanje.
[ plus_minus @ 11.11.2015. 21:30 ] @
Po meni, jedan od načina je da lepo zamoliš `end-usera` da sam upiše koji layout koristi uz obrazloženje zašto to tražiš, itd. Ali, opet.. nikad ne znaš ko ima koliko layout-a definisanih i hoće li biti iskren i kada će koji da koristi, pa da na osnovu charkoda, itd, detektuješ keypress (js). Isto ti je i sa ipv4 adresama. Ono, nema šanse da budeš 100% sigurna da je baš ta adresa vezana baš za tog i tog već poznatog korisnika.
[ tuxserbia @ 11.11.2015. 23:54 ] @
Pa nije valjda da praviš novi ES ???

PS
Kucam ćirilicom, šta se čita, pitajte Vuka ;-)
[ jablan @ 12.11.2015. 07:43 ] @
Citat:
EmmaR:

Da prepozna koje je pismo upotrebljeno za unos u polje, grubo receno: Da razlikuje cirilicu od latinice. Mozda sam pogresno postavila pitanje.

Da. To je već nešto drugo. Tebi ne treba detekcija rasporeda, već da vidiš da li je string koji si dobila ćirilični ili latinični. (Pored toga što je "raspored tastature" nešto potpuno proizvoljno, zamisli sledeću situaciju: korisniku je aktivan latinični raspored, ali u klipbordu ima ćirilični tekst, i taj tekst pejstuje u tvoje polje. Da li je tekst ćirilični ili latinični?)

Za detekciju pisma u stringu, koristi predefinisane setove ćiriličnog i latiničnog alfabeta, i odredi koji procenat karaktera iz unetog stringa pripada jednom, a koliko drugom. Trebalo bi da bude prilično jednostavno (pitaj na PHP podforumu ako se ne snađeš).

Stvari počinju da bivaju interesantne tek kad treba da prepoznaš jezik kojim je neki string napisan, ali nadam se da ti to ne treba.
[ EmmaR @ 12.11.2015. 11:01 ] @
Citat:
jablan: Da. To je već nešto drugo. Tebi ne treba detekcija rasporeda, već da vidiš da li je string koji si dobila ćirilični ili latinični. (Pored toga što je "raspored tastature" nešto potpuno proizvoljno, zamisli sledeću situaciju: korisniku je aktivan latinični raspored, ali u klipbordu ima ćirilični tekst, i taj tekst pejstuje u tvoje polje. Da li je tekst ćirilični ili latinični?)

Za detekciju pisma u stringu, koristi predefinisane setove ćiriličnog i latiničnog alfabeta, i odredi koji procenat karaktera iz unetog stringa pripada jednom, a koliko drugom. Trebalo bi da bude prilično jednostavno (pitaj na PHP podforumu ako se ne snađeš).

Stvari počinju da bivaju interesantne tek kad treba da prepoznaš jezik kojim je neki string napisan, ali nadam se da ti to ne treba.


Cilj: na osnovu unetog u polje naci i vratiti odgovarajuca preklapanja iz MySQL baze, tacnije jedne jedine tabele u kojoj je koriscena srpska latinica. To moze i na ovaj nacin:
Code:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>konvertovanje u srpsku latinicu</title>
<script type="text/javascript">
<!--

function ulazKeyUp()
{
    var ulaz = document.getElementById('ulaz');
    var izlaz = document.getElementById('izlaz');
    izlaz.value = ConvertToLatin(ulaz.value);
}


function ConvertToLatin(ulaz)
{
    /* primer obrade malih slova*/    
    var c = '';
    var slovo = '';
    var i;
    for (i=0; i<ulaz.length; i++)
    {
        slovo = ulaz.substr(i, 1);
        switch (slovo)
        {
            case "a": c += "a"; break;
            case "b": c += "b"; break;
            case "v": c += "v"; break;
            case "g": c += "g"; break;
            case "d": c += "d"; break;
            case "đ": c += "đ"; break;
            case "e": c += "e"; break;
            case "ž": c += "ž"; break;
            case "z": c += "z"; break;
            case "i": c += "i"; break;
            case "j": c += "j"; break;
            case "k": c += "k"; break;
            case "l": c += "l"; break;
            case "lj": c += "lj"; break;
            case "m": c += "m"; break;
            case "n": c += "n"; break;
            case "nj": c += "nj"; break;
            case "o": c += "o"; break;
            case "p": c += "p"; break;
            case "r": c += "r"; break;
            case "s": c += "s"; break;
            case "t": c += "t"; break;
            case "u": c += "u"; break;
            case "f": c += "f"; break;
            case "h": c += "h"; break;
            case "c": c += "c"; break;
            case "č": c += "č"; break;
            case "ć": c += "ć"; break;
            case "dž": c += "dž"; break;
            case "š": c += "š"; break;
            default:
                if(slovo == "d") 
                {
                    if(ulaz.substr((i+1),1) == "j")
                    {
                        i++;
                        slovo = "đ";                    
                    }
                    if(ulaz.substr((i+1),1) == "z")
                    {
                        i++;
                        slovo = "dž";                    
                    }                    
                    
                }
                c += slovo;
                break;
        }
    }
    return c;
}

// -->
</script>
</head>
<body>
Primer korišćenja funkcije:
<input id="ulaz" onkeyup="ulazKeyUp()" type="text" value="">
<input id="izlaz" type="text">
<br>(Kucajte nešto ćirilično ili latinično u prvi textbox.)
</body></html>

Btw. ovo je preradjena verzija ovoga: latinica->cirilica (S obzirom da je u pitanju jednostavan primer koji se moze resiti na vise nacina i da sam ga znatno izmenila, da li treba navoditi izvor, tj. prvobitnog autora?)

Zamisao je bila da se na jednostavan nacin identifikuje da li je upotrebljena cirilica, srpska latinica ili engleska latinica uz zaobilazenje obrade svakog slova, uz mogucnost prevodjenja, po potrebi, u latinicu ili cirilicu. Trenutno mi treba po principu prevesti "bilo sta" u srpsku latinicu.

Citat:
tuxserbia: Pa nije valjda da praviš novi ES ???

PS
Kucam ćirilicom, šta se čita, pitajte Vuka ;-)

daleko sam ja od toga.


P.S. html fajl je u prilogu jer ni code nije postedjen prevodjenja u latinicu.
[ jablan @ 12.11.2015. 21:16 ] @
Šta je dakle pitanje?
[ EmmaR @ 13.11.2015. 20:49 ] @
Citat:
jablan: Šta je dakle pitanje?


Kako što jednostavnije prepoznati koje je pismo korišćeno pri unosu podataka?
Krenula sam od logike da je najjednostavnije prepoznati koja je tastatura aktivna (engleska, srpska latinica, srpska ćirilica, ...), ali sam previdela mogućnost copy-paste (u mom slučaju ovo i nije neka greška, jer je verovatnoća korišćenja copy-paste od strane korisnika jako zanemarljiva). Otuda je proizišlo pitanje.

Postoji li neki drugi način osim provere svakog unetog znaka?
Trenutno mi pada na pamet upotreba reguarnih izraza. Hoće li raditi sa neengleskim karakterima? Da li je brže? Ima li neko iskustva?
[ plus_minus @ 13.11.2015. 22:10 ] @
Neka ti sve bude u utf-8. ... str_split('dobijeni tekst od strane korisnika') npr.. pa onda dobijeni niz proveravaš sa drugim nizovima (ćirilični/latinični) sa našim pismom.... a ako je sve u utf-8 onda gledaš da koristiš multibyte funkcije.. pa ako nema pogođenih slova, onda je to alfabet, standard.. nije ni sr a ni sr_LAT, itd. .. ovo je baš onako, sažeto i na brzaka napisano. Proveravanje svakog unetog znaka mu dođe najpreciznije. A znakova nema puno. 30 ćiriličnih i alfabet + naši latinični znakovi... ukoliko ne ciljaš i arapski, .. jermenski, ruski...
[ EmmaR @ 15.11.2015. 10:20 ] @
Citat:
plus_minus: Neka ti sve bude u utf-8. ... str_split('dobijeni tekst od strane korisnika') npr.. pa onda dobijeni niz proveravaš sa drugim nizovima (ćirilični/latinični) sa našim pismom.... a ako je sve u utf-8 onda gledaš da koristiš multibyte funkcije.. pa ako nema pogođenih slova, onda je to alfabet, standard.. nije ni sr a ni sr_LAT, itd. .. ovo je baš onako, sažeto i na brzaka napisano. Proveravanje svakog unetog znaka mu dođe najpreciznije. A znakova nema puno. 30 ćiriličnih i alfabet + naši latinični znakovi... ukoliko ne ciljaš i arapski, .. jermenski, ruski...


ne, ne ,,, samo srpski koji može biti napisan primenom različitih pisama. Na sreću, još ne videh da neko koristi nemačke, francuske ili ruske znakove.

Znači, ipak iteracija kroz ulazni string sa proverom poklapanja korišćenog pisma.