Funcția de translație phle în limba php gtranslate ()

Și voi începe cu faptul că traducătorul Google este un serviciu destul de dinamic. Pe lângă utilizarea butonului "Traducere", traducerea introdusă în formularul de date poate fi efectuată automat, adică în zbor. Fiecare astfel de traducere este o cerere către server. Astfel, putem spune că cererea noastră nu va crea o problemă specială. Cu toate acestea, pentru a abuza de această oportunitate, poate că nu merită.







Pentru a obține rezultatul în format JSON, parametrul client trebuie să fie setat la x. În parametrul q, textul care urmează să fie tradus este transmis. Parametrul sl conține identificatorul limbii din care se face traducerea și tl este identificatorul limbii la care se face traducerea. Și totuși, rezultatul va fi în codarea UTF-8.

În principiu, nimic complicat, dar aici este codul funcției PHP:

Vă atrag atenția asupra faptului că funcția gtranslate () returnează un obiect cu proprietățile corespunzătoare. Astfel, funcția este destul de flexibilă și dinamică.

Mai jos voi da un exemplu de obținere a valorii liniei de traducere:

$ gt = gtranslate ("exemplu de utilizare a uleiului de mașină", ​​"ru", "en");
echo $ gt-> propoziții ['0'] -> trans; // va returna o linie: exemplu de utilizare a uleiului de motor

echo "

„; var_dump ($ gt); echo "
„;

În cazul exemplului de mai sus, veți primi următoarele:

obiect (stdClass) # 1 (3) ["propoziții"] =>
array (1) [0] =>
obiect (stdClass) # 2 (4) ["trans"] =>
șir (32) "exemplu de utilizare a uleiului de motor"
["orig"] =>
string (69) "exemplu de utilizare a uleiului de mașină"
["translit"] =>
șir (0) ""
["src_translit"] =>
șir (38) "primer ispol'zovaniya mashinnogo masla"
>
>
["src"] =>
șir (2) "en"
["server_time"] =>
int (1)
>

Rețineți că traducătorul Google returnează rezultatul împărțit în propoziții (propoziții în limba engleză). Aș numi fragmentele. Cu o cantitate mare de date, obținem o gamă completă de astfel de propoziții. Le puteți procesa, de exemplu, astfel:

foreach ($ gt-> propoziții ca $ sentence) echo '

“. $ sentence-> trans. "

„;
echo "

“. $ sentence-> orig. "

„;
>

Având în vedere că funcția mea utilizează acum metoda de transfer de date POST, nu ar trebui să apară probleme cu date mari.

Parametrul src_translit este de asemenea interesant aici. care conține transliterația fragmentului, în acest caz scrierea textului rusesc cu litere latine. Cu toate acestea, pentru aceasta este mai bine să utilizați versiunea locală, vedeți funcția php translit (). Adevărat, acesta din urmă este ascuțit într-o măsură mai mare pentru a crea un CNC.







Revenind la traducătorul Google, merită menționat și parametrul dict. care apare la traducerea unui singur cuvânt. Acesta va conține un număr de date vocabulare suplimentare, cum ar fi determinarea părții de vorbire, a opțiunilor de traducere etc. dar aici puteți vedea singuri.

Pe asta am totul. Vă mulțumesc pentru atenție. Mult noroc!

Rămâne doar să înțelegem unde să punem totul.

@ Maxim una dintre opțiuni - generație de CNC. Desigur, puteți utiliza transliterația locală, dar cred că în cazul în care extindeți cheia în mod eficient în detrimentul CNC în limba engleză. Pe blogger, desigur, nu mă, manual, să traduc în transliterația fragmentului dorit și să prescriu o legătură permanentă. Dacă vorbim despre găzduirea noastră, atunci este posibilă traducerea antetului și generarea CNC în limba engleză. Apropo, aici nu va fi inutil să folosiți Ajax, tk. serviciul poate fi sau nu disponibil.

Atunci când există mai multe propoziții, dintr-un anumit motiv, el oferă doar primul. Eu folosesc această construcție: $ gt-> propoziții ['0'] -> trans;
Cum se obține întregul text într-o singură variabilă? Mulțumesc!

2Aa pentru a răspunde la întrebarea dvs. trebuie să înțelegeți ce este un obiect și ce este o matrice. Sau merită să începem cu ceea ce este o variabilă?

M-am gândit, mulțumesc. Doar nu sunt puternice în php, așa îmi pare rău. Este păcat că textele mari nu pot fi traduse în mașină. Traduce numai scurt.

2Ya. Da, solicitarea GET este mică, dar puteți utiliza POST. Pentru a face acest lucru, trebuie să schimbați ușor funcția sau, mai degrabă, valorile variabilelor $ filename și $ options:

Adevărul trebuie avut în vedere că Google Translate împarte textul mare în propoziții. Iată o variantă a traducerii și a traducerii originale:

foreach ($ gt-> propoziții ca $ sentence) echo '

“. $ sentence-> trans. "

„;
echo "

“. $ sentence-> orig. "

„;
>

Konstantin, mulțumesc, m-ai ajutat foarte mult. )

Chiar nu funcționează

2Denis Stashuk exact ceea ce nu funcționează. Verificat, ca toate exemplele de lucru.

Este uimitor cât de bine funcționează totul. Cred că gtranslate () va fi mult mai util pentru cpu decât translit (). Vă mulțumesc foarte mult pentru munca voastră.

2Siren DS Da, subiectul este interesant, dar trebuie să fie luată în considerare și dependența de serviciile online.

În codul anterior al transliterației, a fost tăiat un spațiu înainte de cuvântul care începe cu E, aici este versiunea corectată:

functie translit ($ string) $ string = preg_replace ('# \ s + # este', '', mb_strtolower ($ string));

$ string = preg_replace ('| and | o | y | u | e | | | | | s) (e | ;

$ string = trim (preg_replace ('# \ s + # este', '', $ șir));
>

2Nazir Gebekov în funcția mea translit () este luată în considerare și litera "e". Aici nu este necesar să uităm că codul este dependent de codificare din cauza alfabetului chirilic.

așa că folosesc doar codarea utf-8 și așa ar trebui să fie clar pentru că am folosit mb_strtolower și nu strtolower.

Și în această funcție, momentele sunt luate în considerare atunci când este necesar să se utilizeze "voi" și atunci când "e" în loc de rusă "e" și "e" ceea ce face de fapt transliterul Google.

Ce se întâmplă cu diferitele codificări care împiedică utilizarea iconv înainte de translit?

2Nazir Gebekov este de acord cu traducerea și cu funcția locală, dar pentru o traducere completă totuși tot trebuie să folosească serviciul, ceea ce face funcția mea.

Alexander Genterov, din păcate, ah, cu un număr mare de apeluri de la o IP, există o încuietoare, deoarece funcția nu utilizează API-ul oficial Google Translate. Alternativ, puteți încerca să utilizați un server intermediar care se află pe o altă adresă IP pentru a prelua date.

și din anumite motive această funcție gtranslate () în locul literelor rusești produce solid. ((((cum să se ocupe de asta?







Trimiteți-le prietenilor: