Domov › Diskusné Fóra › Tipy, triky, modding v Mac OS X › prevod oznaceneho textu do slovenciny
- This topic has 14 odpovedí, 4 hlasy, and was last updated pred 10 years, 1 months by mk01.
-
AutorPríspevky
-
5. septembra 2014 o 11:29 #101510vlado_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.
5. septembra 2014 o 14:21 #389387iMartinÚč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.
5. septembra 2014 o 14:28 #389388vlado_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 “á”?
5. septembra 2014 o 14:35 #389391iMartinÚč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 :)
5. septembra 2014 o 14:46 #389392iMartinÚč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.
5. septembra 2014 o 14:56 #389393vlado_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!\\\\!ň!g5. septembra 2014 o 20:18 #389409Jozef 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.
5. septembra 2014 o 20:43 #389410vlado_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.
5. septembra 2014 o 21:49 #389417Jozef RemenÚčastník (Participant)Mozes.
Tu a Macblog automaticky nahradzuje lomku za vykricnik?
5. septembra 2014 o 22:01 #389420vlado_bbÚčastník (Participant)asi nie, aj v Automatori mi to bez problemov funguje s vykricnikmi.
5. septembra 2014 o 23:07 #389428vlado_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.
6. septembra 2014 o 8:52 #389440vlado_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.
6. septembra 2014 o 17:48 #389464Jozef 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 :)
6. septembra 2014 o 18:01 #389466vlado_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
???
18. októbra 2014 o 21:03 #393205mk01Úč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
— -
AutorPríspevky
- Musíte byť prihlásený, aby ste mohli odpovedať na túto tému.