prevod oznaceneho textu do slovenciny

Domov Diskusné Fóra Tipy, triky, modding v Mac OS X prevod oznaceneho textu do slovenciny

Zobrazuje sa 15 príspevkov - 1 až 15 (z celkového počtu 15 )
  • Autor
    Príspevky
  • #101510
    vlado_bb
    Účastník (Participant)

    Dobry den, z casu na cas sa mi podari toto: pisem text, kde vyuzivam ako anglicku, tak slovensku klavesnicu. Sem tam ich ale zabudnem prepnut a potom po chvili pisania pozriem na obrazovku a vidim napriklad:

    syst0m uzavret7ch mno69n

    To, co by sa mi velmi zislo, by bola funkcia, ktora by mi umoznovala toto: Oznacim si takyto spotvoreny text, kliknem (napriklad) Alt-S a tym sa mi v texte nahradi 0 za é, 7 za ý, 6 za ž a 9 za í. Vie niekto poradit, ako by som toto mohol v Automatori urobit? Alebo v niecom inom. Idealne by bolo, keby tato funkcia fungovala vo vsetkych aplikaciach, kde clovek pise texty – Pages, Mail, Latexian, atd.

    Dakujem.

    #389387
    iMartin
    Účastník (Participant)

    No musel by si také nahradzovanie naprogramovať (alebo niekto iný). V Automatore vytvoríš nový Service, hore nastavíš ako vstup „text“ in „any application“ a „Output replaces selected text“.

    Teraz už iba použiješ akciu Run Shell Script v Utilities sekcii) a spustíš hotový program, ktorý také nahradenie vykoná.

    Edit: Ak si večer spomeniem, môžem ti taký program napísať ja v Objective-C.

    #389388
    vlado_bb
    Účastník (Participant)

    iMartin: Dakujem, ale urcite sa tym nezatazuj, pokusim sa potrapit s tym. Je teda Objective-C nevyhnutny? Neda sa to riesit postupnostou prikazov typu replace “8” by “á”?

    #389391
    iMartin
    Účastník (Participant)

    Na jazyku nezáleží, môže to byť akýkoľvek shell script, C, C++, Objective-C, Swift, naozaj čokoľvek, čo sa dá spustiť z terminálu.

    Určite sa na to dá napísať nejaký jednoduchý shell script, ale ja ovládam Objective-C :)

    #389392
    iMartin
    Účastník (Participant)

    No prezrel som internet a našiel som príkaz `sed`, tak skús takto:

    sed ‘s!1!+!g’ | sed s!2!ľ!g | sed s!3!š!g | sed s!4!č!g | sed s!5!ť!g | sed s!6!ž!g | sed s!7!ý!g | sed s!8!á!g | sed s!9!í!g | sed s!0!é!g

    Medzi výkričními sú tie dvojice znakov, ktoré sa majú nahradiť, teraz je tam 1234567890.

    #389393
    vlado_bb
    Účastník (Participant)

    Tiez som prave pozeral na prikazy sed-u … Tak to skusim v Automatore.

    Toto bude sk[3obn8 veta, na jej k=opii to otestujem.

    Toto bude sk[šobná veta, na jej k=opii to otestujem.

    Aha, vidim ze tam treba este nejake specialitky doplnit, ale to uz bude hracka. Srdecne dakujem.
    edit: Trochu som sa potrapil s pismenom ň, kym som zistil, ze riesenim je sed s!\\\\!ň!g

    #389409
    Jozef Remen
    Účastník (Participant)

    urcite by som pouzil for/while slucku a spravil nahradu v jednom kroku, takto opakovane volas sed co moze pri dlhsom texte trvat.

    #389410
    vlado_bb
    Účastník (Participant)

    Jozef: nie je rovnako dobre pouzit prikaz typu

    sed -e ‘s!1!+!g’ -e s!2!ľ!g -e s!3!š!g

    atd? Neviem, toto je moj prvy kontakt so sed-om.

    #389417
    Jozef Remen
    Účastník (Participant)

    Mozes.

    Tu a Macblog automaticky nahradzuje lomku za vykricnik?

    #389420
    vlado_bb
    Účastník (Participant)

    asi nie, aj v Automatori mi to bez problemov funguje s vykricnikmi.

    #389428
    vlado_bb
    Účastník (Participant)

    Predsa len este jeden problem. Service na prevod en->sk sa mi podarilo urobit a funguje. Urobil som to pomocou prikazu

    sed -e ‘s!1!+!g’ -e s!2!ľ!g -e s!3!š!g …. atd

    Ked som ale chcel urobit aj opacny prevod, teda Service sk->en, tak prikaz

    sed -e s!+!1!g -e s!ľ!2!g -e s!š!3!g …. atd

    uz nefunguje. Lepsie povedane, ak na retazec 123 aplikujem service en->sk, tak dostanem +ľš, co je v poriadku. Ak na TOTO aplikujem sk->en, dostanem naspat 123, co je tiez v poriadku. Ale ak NAPISEM napriklad v maili +ľš a pouzijem sk->en, tak dostanem 1ľš. Skoda, bolo by fajn mat prevod obomi smermi. Chybu ale Automator nehlasi. Ako keby pismeno s diakritikou, ktore napisem do aplikacie nebolo to iste pismeno s diakritikou, ktore je v shell skripte.

    #389440
    vlado_bb
    Účastník (Participant)

    Stale na to nemozem prist, ale mozno sa tu najde clovek, ktory hlbsie vidi do kodovania diakritiky v OS X. Mam nejasne tusenie, ze najprv by bolo treba vo workflow-e oznaceny retazec prekodovat do niecoho comu uz potom sed spravne rozumie, teda nieco ako prikaz

    iconv -f CP1250 -t UTF-8

    ale ani po mnohych pokusoch s tymto prikazom mi prevod (napriklad) ž na 6 nejde.

    edit: Hotovo, iconv -f UTF-8 -t UTF-8-MAC je spravne riesenie.

    #389464
    Jozef Remen
    Účastník (Participant)

    + mysis brat ako special character, tusiz musis pre doslovny znak + pouzit escape character:
    \+

    Teda spatna lomka. Tyka sa to aj inych special chars v regexoch ako . (1 luboolny znak), * (lubovolny pocet lub. znakov), / (lomka), $ (koniec riadka), | (or), ^ (zaciatok riadka), () (zatvorky, ulozenie do premennej), [] (sustava znakov, v zapise [^0-9] predstavuje znak ^ NOT operator, tudiz akykolvek znak okrem cisiel).

    Atd. Ak by daco, pis, regrcy mam nabuchane :)

    #389466
    vlado_bb
    Účastník (Participant)

    Dakujem, snad uz iba pokial ide o optimalizaciu – je jedno, ci pouzijem prikaz typu

    sed -e s!a!b! g -e s!x!y!g

    a prikaz typu

    sed s!ax!by!g

    ???

    #393205
    mk01
    Účastník (Participant)

    nie.

    ‘s/ax/by/g’ pojde doslova – globalne zamen “ax” za “by”.

    mozes ale sikovne pouzit vlastnost shellu “shell expansion”, ktora zadany “jeden” prikaz aplikuje pre vsetky argumenty na “vstupe”.


    a=’1 + 2 ľ 3 š 4 č 5 ť 6 ž 7 ý 8 á 9 í 0 é’

    cmd=$(printf ” | sed ‘s/%s/%s/g'” ${a[@]})
    eval cat $cmd

Zobrazuje sa 15 príspevkov - 1 až 15 (z celkového počtu 15 )
  • Musíte byť prihlásený, aby ste mohli odpovedať na túto tému.