# słownik w linii poleceń

## misterLu

Witam, napisałem prosty skrypt służący do tłumaczenia słów pomiędzy językami:

polski <- -> niemiecki

polski <- -> angielski

polski <- -> francuski.

Podstawową zaletą jest to, że nie trzeba odpalać przeglądarki, aby sprawdzić szukane słowo.

Można to uczynić prosto z terminata prosto wpisując: ./tlumacz.pl slowo, a po paru sekundach dostaniemy to samo, co dostalibyśmy na slowniki.onet.pl.

Zasady użycia:

./tlumacz slowo (tłumaczy z polskiego na angielski, lub odwrotnie (sam rozpoznaje język))

./tlumacz -n slowo (tłumaczy z polskiego na niemiecki, lub odwrotnie (sam rozpoznaje język))

./tlumacz -f slowo (tłumaczy z polskiego na francuski, lub odwrotnie (sam rozpoznaje język))

Zasada działania skryptu jest bardzo prosta: udaje przeglądarke i łączy się z witryną http://portalwiedzy.onet.pl/tlumacz.html, i pobiera tłumaczenie słowa tak, jakbyśmy wchodzili na strone. Zaletą jest to, że nie musimy oglądać tych nędznych i wszechobecnych reklam. Oczywiście skrypt nie jest doskonały, a to dlatego, że każde udoskonalenie, to dodatkowe regexpy,a te jak wiemy są jednymi z najdłużej działających funkcji perla.

Skrypt jest bardzo wygodny, zamieszczam go pod spodem wraz ze wskazówkami 'przeduruchumieniowymi':

1)zakładam, ze macie Perl'a,

2)musicie dociągnąć 2 moduły (zakładam, że reszte macie)

```

emerge -vD dev-perl/HTML-Tree

emerge -vD libwww-perl

```

a teraz sam skrypt: UWAGA! tu jest wersja akualna http://mion.elka.pw.edu.pl/~ldylag/?id=-1

```

#!/usr/bin/perl -w

use Getopt::Std;

%options=();

getopts("naf",\%options);

#zmienne niezbedne do odpytania serwera

%GET=();

if($options{n}){

        $GET{'tr'}="nie-auto";

}elsif($options{f}){

        $GET{'tr'}="fra-auto";

}elsif($options{a}){

        $GET{'tr'}="ang-auto";

}else{

        $GET{'tr'}="ang-auto";

}

#adres slownika 

$baseUrl="http://portalwiedzy.onet.pl/tlumacz.html?";

$GET{'qs'}=$ARGV[0] or die("uzycie: $0 slowo_do_tlumaczenia");

$GET{'ch'}=1;

$GET{'x'}=0;

$GET{'y'}=0;

foreach $key (keys %GET){

        $baseUrl.=$key."=".$GET{$key}."&";

}

$baseUrl=~s/\&$//;

use LWP::UserAgent;

use HTTP::Request;

my $userAgent = LWP::UserAgent->new();

$userAgent->agent("Opera/7.54 (X11; Linux i686; U)");

my $request = HTTP::Request->new(GET => $baseUrl);

$request->referer("http://portalwiedzy.onet.pl/");

$response=$userAgent->request($request);

if($response->is_error()){

        printf("%s\n",$response->status_line);

        exit;

}

my $content=$response->content();

$content=~s/<BR>/[BR]/ig;

#wywalmy tagi HTMLowe

use HTML::TreeBuilder;

my $tree=HTML::TreeBuilder->new;

$tree->parse($content);

$tree->eof;

$word=$GET{'qs'};

$content=$tree->as_text();

if($content =~ /Nie znaleziono/){

        $retList="--";

}else{

        $content=~s/.*Wyniki tłumaczenia:.*?(\d)/$1/g;

        $content=~s/Przetłumaczono.*$//g;

        $content=~s/\[BR\]/\n/g;

        @versions=split(/(\w+ )?$word( \w+)?/i, $content);

        $retList=$versions[0];

}

printf("%s\n", $retList);

exit;

```

kopiujecie , dodajecie prawa wykonywalne

```
chmod +x tlumacz.pl
```

i używacie (jak w przykładzie)

Oryginalna i mam nadzieje uaktualniana wersja skryptu znajduje się na mojej stronie www:http://mion.elka.pw.edu.pl/~ldylag/?id=-1

Przykład działania:

```

ludwik@lu asu $ ./tlumacz.pl nauczyciel

1 teacher

2 instructor

3 schoolmaster

4 school-teacher

5 master

6 professor

7 tutor

8 preceptor

```

Last edited by misterLu on Sun Apr 03, 2005 7:54 pm; edited 5 times in total

----------

## _troll_

niezmiernie uzyteczny bajerek! thx misterLu!

Pozdrawiam,

Przemek

----------

## Strus

Świetny pomysł MisterLu, tylko wyskakuje mi taki błąd:

```
Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/site_perl/5.8.4/i686-linux /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.4/i686-linux /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.4/i686-linux /usr/lib/perl5/5.8.4 /usr/local/lib/site_perl .) at ./tlumacz.pl line 26.

BEGIN failed--compilation aborted at ./tlumacz.pl line 26.

```

linia 26 to u mnie use LWP::UserAgent;

----------

## misterLu

```
emerge -vD libwww-perl 
```

powinno załatwić sprawe

----------

## Strus

 *misterLu wrote:*   

> 
> 
> ```
> emerge -vD libwww-perl 
> ```
> ...

 

Załatwiło  :Very Happy:  Program działa, jest extra

Pozdrawiam i życzę więcej takich pomysłów

----------

## misterLu

kolejna wersja przewiduje tłumaczenie pliku ze słowami  i output do pliku w postaci:

we:

```

mama

tata

sistra

```

a wy:

```

mama: mother, mamma,momma

taka:papa, dad,daddy

siostra:sister

```

brak mi tylko czasu  :Sad: 

----------

## Strus

Można by go skopiować do /usr/bin/ albo ustawić zmienną $PATH do katalogu z nim. Tak jest owiele szybciej i nieważne w jakim katalogu się znajdujemy wystarczy wpisać tlumacz   :Very Happy: 

----------

## Rav70

Wynalazek zajefajny tylko cos mi sie krzaczy:

```

$ tlumacz recall

1 przywołanie2 odwołanie3 odwołanie pracownika4 rewokacja5 wycofanie6 cofanie7 pamięć8 odwołać9 przypominać sobie10 pamiętać kogoś coś11 wspominać12 anulować coś13 rewokować14 wskrzesić15 wycofać beyond

```

z www:

```

recall (Ectaco-Poland)

v,

1 przywołanie

2 odwołanie

3 odwołanie pracownika

4 rewokacja

5 wycofanie

6 cofanie

7 pamięć

8 odwołać

9 przypominać sobie

10 pamiętać kogoś coś

11 wspominać

12 anulować coś

13 rewokować

14 wskrzesić

15 wycofać

beyond recall (Ectaco-Poland)

adv,

1 odwołanie

2 nie do odwołania

```

wersja ^C^V z Twojego www

Pozdr. R.

----------

## misterLu

dzięki za info! jak pisałem skrypt nie jest doskonały, ale będę go w miare możliwości poprawiał! Skrypt zwraca TYLKO PIERWSZE TŁUMACZENIE. Poprawiona wersja jest tu: http://dylag.pl/?id=showskrypt&what=tlumacz.pl, czyli zwraca 15 tłumaczeń słowa recall (bez słowa beyond na końcu). Kolejne tłumaczenia odnoszą się do związku frazeologicznego, lub jakić kolokwializmów (i prawde powiedziawszy nie bardzo wiem, co z nimi zrobić). Czekam na sugestie i dalsze bugi.

----------

## Woocash

Mam następny bład :

```
./tlumacz.pl -n rok

160 000 haseł)

Ectaco-Poland Ltd.

Copyright 1996 - 2004 Onet.pl SA - zobacz wszystkie serwisy ť Polityka dotycząca cookiedo góry
```

----------

## Strus

 *Woocash wrote:*   

> Mam następny bład :
> 
> ```
> ./tlumacz.pl -n rok
> 
> ...

 

Miałem to samo, wpisz słowo które tłumaczysz tu http://portalwiedzy.onet.pl/tlumacz.html a zobaczysz dlaczego taki komunikat dostajesz. Jak jest tylko jedno tłumaczenie, bez numerków 1,2,3 itp to tak się właśnie kaszani

----------

## Gogiel

A przewidujesz w programie obsluge proxy?

----------

## Strus

 *Gogiel wrote:*   

> A przewidujesz w programie obsluge proxy?

 

Możesz sobie ustawić na firewallu forwardowanie wszystkiego co wychodzi na port 80 na IP i port tego proxy i już  :Wink: 

----------

## Rav70

hm czy tylko mi nie działa?

```

$ tlumacz recall

Portal wiedzy - Tłumacz



Czat Poczta Onet.pl 

onet.pl ortal wiedzy łumacz 

```

z www:

```

Wyniki tłumaczenia: reload

ang-pol

reload (Ectaco-Poland)

v,

1 przeładować

2 zarepetować

```

Pozdr. R.

ps szkoda że moja znajomość perla obsysa, pomógłbym zamiast tylko marudzić  :Razz: 

----------

## Strus

u mnie to wygląda tak:

```
[505] 21:38:20

[strus@strusmachine strus]$ tlumacz recall

1 przywołanie

2 odwołanie

3 odwołanie pracownika

4 rewokacja

5 wycofanie

6 cofanie

7 pamięć

8 odwołać

9 przypominać sobie

10 pamiętać kogoś coś

11 wspominać

12 anulować coś

13 rewokować

14 wskrzesić

15 wycofać beyond
```

i 

```
[506] 00:06:54

[strus@strusmachine strus]$ tlumacz reload

1 przeładować

2 zarepetować

```

Więc z programem jest wszystko ok.

----------

## Rav70

 *Strus wrote:*   

> u mnie to wygląda tak:
> 
> ```
> [505] 21:38:20
> 
> ...

 

widzę że używasz starej wersji  :Wink:  ale na desktopie mi działa czyli tamten serw coś pewnie ma skopane. ATSD widzę że pewnie tylko mi nie wstawia znaku końca linii:

```

$ tlumacz recall

1 przywołanie2 odwołanie3 odwołanie pracownika4 rewokacja5 wycofanie6 cofanie7 pamięć8 odwołać9 przypominać sobie10 pamiętać kogoś coś11 wspominać12 anulować coś13 rewokować14 wskrzesić15 wycofać

```

co może być powodem?

Pozdr. R.

----------

## Gogiel

 *Strus wrote:*   

>  *Gogiel wrote:*   A przewidujesz w programie obsluge proxy? 
> 
> Możesz sobie ustawić na firewallu forwardowanie wszystkiego co wychodzi na port 80 na IP i port tego proxy i już 

 

Jakie modul iptables sa potrzebne??

----------

## Strus

 *Gogiel wrote:*   

> Jakie modul iptables sa potrzebne??

 

W sumie nie wiem, nigdy tego nie robiłem, ale coś z NATem np.

```
CONFIG_IP_NF_NAT_LOCAL=y

CONFIG_IP_NF_NAT=y
```

I wymyśleć regułkę dla iptablesa żeby przekierował wszystko co wychodzi z Twojego kompa z portu 80 na port 8080 tego serwera proxy.

----------

## fallow

przydalby sie ebuild  :Wink: 

----------

## misterLu

 *fallow wrote:*   

> przydalby sie ebuild 

 

troll już nad tym pracuje! ebuild będzie zawierał słownik oraz program do drukowania o którym mowa w temacie https://forums.gentoo.org/viewtopic.php?t=158294&.

A ja w miare możliwości będę starał się udoskonalać oba programy.

Sęk w tym, że któregoś pięknego dnia skrypt do tlumaczenia przestanie działać. Wystarczy by onet zmienił strukturę strony, lub sposób podawania wyników. Dlatego nie polecam wpisywania dziwnych rzeczy w linijce 

```
$request->referer("http://portalwiedzy.onet.pl/");
```

, bo analizatorzy logów na serwerze mogą się bardzo zdziwić, jak zobaczą tam jakieś dziwne śmiecie, admini się wkurzą, że ludzie omijają ich banerry i reklamy i skończy się tak, jak z bramkami do SMSów.

A tak przy okazji,  *Quote:*   

> ATSD widzę że pewnie tylko mi nie wstawia znaku końca linii: 
> 
> 

 

dwa pytania: 

1)mój skrypt, czy edytor na forum nie wstawia nowej linii ?

2)co to znaczy ATSD ?

 *Quote:*   

> Jak jest tylko jedno tłumaczenie, bez numerków 1,2,3 itp to tak się właśnie kaszani
> 
> 

 

już to naprawiłem, zamieniłem linijkę

```
$content=~s/.*Wyniki tłumaczenia:.*?(\d)/$1/g;

```

na 

```
$content=~s/.*Wyniki tłumaczenia:.*?\w,.*?\[BR\]/\[BR\]/g;

```

Czekam na następne błędy.

----------

## ai

[quote="Rav70"]hm czy tylko mi nie działa?

```

$ tlumacz recall

Portal wiedzy - Tłumacz



Czat Poczta Onet.pl 

onet.pl ortal wiedzy łumacz 

```

z www:

```

Wyniki tłumaczenia: reload

ang-pol

reload (Ectaco-Poland)

v,

1 przeładować

2 zarepetować

```

co moze byc powodem tego bledu bo tez tak mam.... ?? 

poz ai.

----------

## Rav70

 *misterLu wrote:*   

> 
> 
> A tak przy okazji,  *Quote:*   ATSD widzę że pewnie tylko mi nie wstawia znaku końca linii: 
> 
>  
> ...

 

ad. 1) Twój skrypt

ad. 2) A Tak Swoją Drogą  :Smile: 

Pozdr. Rav

----------

## misterLu

jeli wyniki drukowane macie w jednej linii to znaczy, ze 

a)jakim dziwnym trafem zawartoć strony jest pozbawiona znaczników [BR]

b)Wasza powłoka le interpretuje znak nowej linii '\n'.

Opcja b wydaje mi się bardziej, prawdopodobna, choć i tak poziom prawdopodobieństwa jest bliski zeru. Możecie to sprawdzić edytujšc skrypt i w 59 linii zmiecie:

```
$content=~s/\[BR\]/\n/g;

```

na:

```
$content=~s/\[BR\]/-/g;
```

(czyli '\n'=>'-')wtedy zamiast nowš liniš, słowa powinny zostać oddzielone mylnikiem. Jeli tak będzie, znaczy że opcja b może być (ale nie musi) prawdziwa, a jeli dalej będzie to samo to znaczy, że opcja a jest prawdziwa.

Co do błędnych wyników ai i Rav70, to trudno mi cokolwiek powiedzieć, bo mogły to by być żle ustawione zmienne domylne w Perlu waszym, ale po pierwsze wszyscy mamy tš samš konfigurację (domylnš) a po drugie nie korzystam z tych zmiennych w skrypcie.

----------

## Strus

misterLu jak piszesz z Internet Explorera to ustaw mu kodowanie ISO-8859-2 bo się rozczytać nie da jak kodujesz w tym windowsowym g.....   :Smile: 

----------

## axquan

Mi też nie działa, a już szczególnie po zmianie z

```

$content=~s/.*Wyniki tłumaczenia:.*?(\d)/$1/g; 

```

na 

```

$content=~s/.*Wyniki tłumaczenia:.*?\w,.*?\[BR\]/\[BR\]/g;

```

Wtedy przynajmniej cokolwiek wyświetlało, w jednej linijce, ale zawsze. Teraz dostaje tylko:

```

axquan@erwin ~/bin $ ./tlumacz recall

axquan@erwin ~/bin $ 

```

mam bash-3.0-r7 i perl-5.8.5-r1 jeśli to oczywiście w czymś pomoże.

----------

## Rav70

 *misterLu wrote:*   

> jesli wyniki drukowane macie w jednej linii to znaczy, ze 
> 
> a)jakims dziwnym trafem zawartosć strony jest pozbawiona znaczników [BR]
> 
> b)Wasza powłoka zle interpretuje znak nowej linii '\n'.
> ...

 

Wyjaśniło się, powodem nie jest ani a) ani b) tylko Twoja stronka - http://dylag.pl/?id=showskrypt&what=tlumacz.pl - jeśli przejrzysz kod na niej to zobaczysz że przeglądarka zmienia linię

```

$content=~s/<BR>/[BR]/ig;

```

na

```

$content=~s/

/[BR]/ig;

```

więc ^C^V wprowadza nie rzucający się zbytnio w oczy błąd - nie wiem czy jedyny. Proponowałbym zamienić '<' i '>' na '&lt;' i '&gt;'.

Pozdr. Rav

----------

## axquan

It`s alive!   :Very Happy: 

----------

## misterLu

@Rav70 : dzięki!

Już poprawiłem wyświetlanie na stronie!

 *Quote:*   

> Wyjaśniło się, powodem nie jest ani a) ani b) tylko Twoja stronka - http://dylag.pl/?id=showskrypt&what=tlumacz.pl

 

Powodem była  moja strona, ale z tego wynikało a), czyli pozbawienie parsowanej strony znaczników [BR].

Ale nie ma co się rozdrabniać. Grunt, że problem rozwiązany.

----------

## no4b

A może by zrobić takie śliczne formatowanie jak ma:

```
#!/bin/sh

#####################################################################

#                                                                   #

#      Prosciutki skrypt do tlumaczenia wyrazow na rozne jezyki     #

#      z wykorzystaniem slownika onet.pl i sexownym outputem.       #

#                                                                   #

#      Feel free to modify, redistribute i takie tam                #

#                                                                   #

#      uwaga: do odpalenia wymagany program lynx                    #

#                                                                   #

#                              autor: Marcin 'aye' Kryczek          #

#                                     aye%gentoo.pl                 #

#                                                                   #

#####################################################################

t=`echo $1 |tr ąćęłńóśżź acelnoszz`;

lynx --dump "http://portalwiedzy.onet.pl/tlumacz.html?qs=${t}" \

| grep -A 1000 -E 'ang-pol|pol-ang' \

|grep -B 1000 "liniasep.gif"  \

|grep -v liniasep.gif \

|sed 's:l/:l:g' \

|while read line; do

        line=`echo "$line" \

                |sed "s:^:      :g"; `;

        line=`echo "$line" \

                |sed -r "s:^ {6}(.*)( \[[0-9]+):   \\\\\\\\e[1;38m\1\\\\\\\\e[0;39m\2:g;"`;

        line=`echo "$line" \

                |sed -r "s:(.*\[.*)(\[.*$):\1\\\\\\\\e[1;30m\2\\\\\\\\e[0;39m:g;"`;

        line=`echo "$line" \

                |sed -r "s:^ {6}(ang-pol|pol-ang):\\\\\\\\e[1;31m\1\\\\\\\\e[0;39m:g;"`;

        echo -e "$line";

done

```

?

----------

## misterLu

Pełna kultura. +10

Musiałem tylko posklejać w jedną te linie, które sklejane były znakiem kontynuacji "\". Wtedy zadziałało.

Ciekaw jestem na ile jeszcze sposobów da się taki tłumacz zrealizować?

----------

## no4b

To jak, b?dzie to formatowanie, czy nie?  :Wink: 

----------

## Woocash

a moderator to jakie ma kodowanie ? bo ja widze '?' zamiast ę, no chyba że to tylko widze ?   :Confused: 

----------

## no4b

Ah, raz konq z domyślnymi ustawieniami użyłem zamiast opery  :Wink: 

----------

## mirek

Nie wiem czy cos zle robie, ale slownik dziala mi tylko w jedna strone tzn tlumaczy z polskiego na ang. lub niemiecki lecz nie dziala z ang. na polski.

```
mirek@localhost ~ $ ./tlumacz go

mirek@localhost ~ $ ./tlumacz nauczyciel

1 teacher

2 instructor

3 schoolmaster

4 school-teacher

5 master

6 professor

7 tutor

8 preceptor

mirek@localhost ~ $ ./tlumacz -n fahren

mirek@localhost ~ $ ./tlumacz -n nauczyciel

1 Dozent

2 Lehrer

```

----------

## psycepa

hmm ja mam natomiast w lini komend slownik collinsa, pewnie nie to samo, ale jesli komus nie chodzi tlumacz.pl to moze to byc pewna alternatywa  :)

goto collins pod linuxem

----------

## sofcik

Czy można prosić o najaktualniejszą wersję skryptu ?  Strona której adres jest podany w 1 poscie "jest w budowie"  :Sad: 

----------

## misterLu

wersja na stronie jest najbardziej aktualna. Sam ją pobrałem niedawno na drugi komputer.

Niestety serwer na którym był skrypt nie działa i nie będzi ejuż działał , przynajmnije nieprędko.

Przy kopiowaniu skryptu z powyższego postu trzeba uważać, aby nie 'wcięło' (z powodu różnic w kodowaniu xterm/przeglądarka) polskich znaków 'ł' itp. 

Skrypt działa poprawnie.

----------

## misterLu

Witam,

umieściłem aktualną wersję skryptu na mojej szkolnej stronie:

Aktualna wersja kodu źródłowego znajduje się tu: 

http://mion.elka.pw.edu.pl/~ldylag/?id=-1

Zalecam pobieranie kodu z powyższej lokalizaji.

----------

## oort

Nie chciałbym się perfidnie wbijać w temat, ale polecę infobota dostępnego pod numerem gg: 3217426

Piszemy np. ap! cat i dostajemy po chwili tłumaczenie. My też korzystamy z onetowych słowników :>

Lista wszystkich dostępnych poleceń po wysłaniu polecenia "pomoc!" (bez ciapek)

----------

## changs

```
18:05 changs[~]$ tlumacz dziewczyna

Portal wiedzy - Tłumacz

Czat Poczta Onet.pl onet.pl � Portal wiedzy � Tłumacz � 

18:06 changs[~]$ tlumacz -n dziewczyna

Portal wiedzy - Tłumacz

Czat Poczta Onet.pl onet.pl � Portal wiedzy � Tłumacz � 

18:08 changs[~]$ tlumacz -n nauczyciel

Portal wiedzy - Tłumacz

Czat Poczta Onet.pl onet.pl � Portal wiedzy � Tłumacz � 

```

Hm ? Emergowalem to co podales.

----------

## szolek

Witam!

Szacunek dla misterLu. Pomysł jak najbardziej słuszny i jak najbardziej git. Tyle że miałem to samo co kolega wyżej.

Więc nie siedząc na daremno zabrałęm się za małe korekty, które na początku nic nie dawały. Nie znajomość perla. Więc przyjaciel google wywalił mi parę kursów.

Nasunełą mi się myśl. Właściwie na onecie wszystkie słowniki są z ograniczonym dostępem więc czego nie bezpośrednio do http://www.translate.pl/.

I dalej potoczyło się to tak:

1.Kilka zmian w skrypcie misterLu.

```

#!/usr/bin/perl -w

use Getopt::Std;

%options=();

getopts("naf",\%options);

if($options{a}){

$direction=2;

}else{

$direction=1;

} 

#adres slownika

$baseUrl="http://www.translate.pl/odp.php4?";

$GET{'word'}=$ARGV[0] or die("uzycie: $0 slowo_do_tlumaczenia");

$GET{'direction'}=$direction;

#$GET{'x'}=0;

#$GET{'y'}=0;

foreach $key (keys %GET){

        $baseUrl.=$key."=".$GET{$key}."&";

}

$baseUrl=~s/\&$//;

use LWP::UserAgent;

use HTTP::Request;

my $userAgent = LWP::UserAgent->new();

$userAgent->agent("Opera/7.54 (X11; Linux i686; U)");

my $request = HTTP::Request->new(GET => $baseUrl);

$request->referer("http://www.translate.pl/");

$response=$userAgent->request($request);

if($response->is_error()){

        printf("%s\n",$response->status_line);

        exit;

}

my $content=$response->content();

$content=~s/<BR>/[BR]/ig;

#wywalmy tagi HTMLowe

use HTML::TreeBuilder;

my $tree=HTML::TreeBuilder->new;

$tree->parse($content);

$tree->eof;

$word=$GET{'word'};

$content=$tree->as_text();

$content=~ s/$word\w/$word /i;

$content=~s/\[BR\]/\n/g;

@versions=split("\n", $content);

$retList=$versions[8];

printf("%s\n", $retList);

exit;

```

2. I jeszcze w związku z tym że używam kodowania UTF-8 w systemie a strona jest w kodowaniu windowsa:

```
#!/bin/bash

tlumacz.pl `echo "$@" |iconv -f UTF-8 -t CP1250` | iconv -f CP1250  -t UTF-8
```

3. Obydwa skrypty odpowiednio tlumacz.pl i tlumacz z prawami wykonywalnymi umieściłemw /usr/bin

ten serwis w przeciwieństwie do onetu nie rozpoznaje automatycznie czy polskie czy angielskie podało się słowo więc skrypt z opcją -a tłumaczy na język angielski (bez odwrotnie).

Wiec ostatecznie:

- tlumaczenie z angielskiego:

```
$ tlumacz reload

 Tłumaczenie: reload PRZEŁADOWAĆ;  ZAREPETOWAĆ
```

- tłumaczenie na angielski i tu małe schody:

w przypadku polskich znaków skrypt nie potrafi odszukać odpowiednio ich wielkich liter. 

```
$ tlumacz -a PRZEŁADOWAĆ

 Tłumaczenie: PRZEŁADOWAĆ TRANS-SHIP;  RELOAD;  OVERLOAD;  OVERBURDEN 
```

```
$ tlumacz -a przeładować

 Tłumaczenie: PRZEŁADOWAĆVTRANS-SHIP;  RELOAD;  OVERLOAD;  OVERBURDEN
```

Co do przeróbek jak pisałem wcześniej jestem zaledwie początkującym w tym temacie i właściwie mimo tego jest to nadal skrypt działający na pomyśle misterLu. Same przeróbki skończyłem gdy skrypt zaczoł wypisywać to co powinien więc napewno wymaga poprawek z czym ja już mogę nie podołać.   :Wink: 

Pozdrawiam!

----------

## oort

A propos różnych znaczków. W kodowaniu ISO-8859-2 jak zauważyłem, poza polskimi ą, ę itd, występują wszystkie niemiecke znaki narodowe ß, ä, ö, ü ale już francuskich jest tylko część. Jest np. é, ale już è nie ma. Wyszło to, ponieważ napisałem sobie skrypt, który mi pobrał większość tłumaczeń z onetu i które zapisałem sobie w tarach  :Smile:  Spróbujcie wkleić sobie w terminalu è. W rxvt w ogóle nie da rady, w etermie pojawia się č :/ Lynx też nie chce zapisać go w pliku (zapisuje jako e lub č zależnie od kodowania). Może zna ktoś sposób jak to nieszczęsne è uzyskać?

----------

## szolek

UTF-8 i urxvt i ładne è maluje się bez najmniejszych problemów. 

Niemałe HOW TO tu  :Wink: 

----------

## oort

O, dzięki  :Smile: 

Ja jeszcze dorzucę mój skrypt do słowników z onetu. Defaultowo ang-pol, ale na początku skryptu wystarczy zmienić na dowolny inny.

Oto on:

```

#!/bin/bash

################

JEZYK=ang-pol # do wyboru: ang-pol, pol-ang, nie-pol, pol-nie, pol-fra, fra-pol

################

url="http://portalwiedzy.onet.pl/tlumacz.html?tr=$JEZYK&dz=og&qs="

K=`pwd`

wyraz=$(echo $@ | tr ' ' '+' | sed -e 's/++*/+/g' -e 's/^++*//g' -e 's/++*$//g' -e 's/[^[:alnum:]+-]//g' | tr '[:upper:]' '[:lower:]')

if

   [ `echo $wyraz | wc -c | sed 's/+//g'` -eq 1 ]

then 

   echo "Podanego słowa nie znaleziono w słowniku"

else

   lynx -dump -nolist -display_charset=iso-8859-2 "$url$wyraz" > $K/dump.$$

   while

     [[ `cat $K/dump.$$ | grep "onet.pl" | grep "(Squid" | wc -l` -eq 1 ]] || [[ `cat $K/dump.$$ | grep "REFRESH" | wc -l` -eq 1 ]] || [[ `cat $K/dump.$$ | grep "Alert!:" | wc -l` -eq 1 ]]

   do

     sleep 0.1

     lynx -dump -nolist -display_charset=iso-8859-2 "$url$wyraz" > $K/dump.$$

   done

   s=`echo $wyraz | tr '+' ' '`

   if

      [ `cat $K/dump.$$ | grep "Nie znaleziono" | wc -l` -eq 1 ] || [ `cat $K/dump.$$ | grep -ixe "   $s (Ectaco-Poland)" | wc -l` -eq 0 ] # słowa po prostu nie ma w słowniku

   then

      echo "Podanego słowa nie znaleziono w słowniku"

   else # wyświetlenie

      if

         [ `cat $K/dump.$$ | grep -ixe "   $s (Ectaco-Poland)" | wc -l` -ne 1 ]

      then # są dwa tłumaczenia

         if

            [ `cat $K/dump.$$ | grep -ixe "   $s (Ectaco-Poland)" -A 1 | head -n 2 | grep -e "-->" | wc -l` -eq 0 ]

         then

            POCZ=`cat $K/dump.$$ | grep -nixe "   $s (Ectaco-Poland)" | cut -d":" -f 1 | head -n 1`

         else

            POCZ=`cat $K/dump.$$ | grep -nixe "   $s (Ectaco-Poland)" | cut -d":" -f 1 | head -n 2 | tail -n 1`

         fi

      else # jedno tłumaczenie

         POCZ=`cat $K/dump.$$ | grep -nixe "   $s (Ectaco-Poland)" | cut -d":" -f 1`

      fi

      I=$[ `cat $K/dump.$$ | wc -l` - $POCZ ]

      KONC=$[ `tail -n $I $K/dump.$$ | grep -ne "(Ectaco-Poland)" -ne "\[liniasep\.gif\]" | cut -d":" -f 1 | head -n 1` - 1 ]

      tail -n $I $K/dump.$$ | head -n $KONC | sed -e 's/^[ ]*//g' -e 's/^[a-z]\{1,5\},[., [:alnum:]]*//g' | grep -v ^$ > $K/$wyraz

      cat $K/$wyraz

      rm -rf $K/$wyraz

   fi # dodania do tara i wyświetlenia

   rm -rf $K/dump.$$

fi

```

Wydaje się działać w każdym przypadku  :Smile:  Zapobrać można stąd http://oort.3lan.pl/angpol.sh

----------

## szolek

Dobre!!!

 jedna propozycja

```
JEZYK=ang-auto
```

automatyczne tłumaczenie pol-ang i na odwrót. 

Chyba że masz jakieś zastrzeżenia.

Jeszcze jedno potrzebny jest lynx jak widzę po skrypcie:

```
emerge lynx
```

----------

## oort

 *szolek wrote:*   

> Dobre!!!
> 
>  jedna propozycja
> 
> ```
> ...

 

Oczywiście, że nie mam  :Smile: 

 *szolek wrote:*   

> 
> 
> Jeszcze jedno potrzebny jest lynx jak widzę po skrypcie:
> 
> ```
> ...

 

Fakt, uznałem, że to dość podstawowy program ^^

----------

## intruz

moze sie da poprawic to ze jak wpiszemy slowo ktore jest tylko jedno w slowniku to je wsywietli a nie wyswietla jakis kod ?  :Smile: 

----------

## szolek

Hmm...

Od jakiegoś czasu korzystam z www.angool.com .  :Smile: 

----------

