Merhaba Bu yazımızda Yandex Translete Api kullanarak delphi uygulamamız ile translate işlemi yapacağız.
Öncelikle gerekenler yandex mail hesabınız olması gerekiyor daha sonra https://tech.yandex.com/translate/ adresinden translate işlemlerimiz de kullanacağımız api key imizi alıyoruz.
Json web servisinden dönen sonucu parse etmek için https://code.google.com/p/superobject/downloads/list aracını kullanacağız.
https://tech.yandex.com/translate/doc/dg/concepts/api-overview-docpage/
Adresinden desteklediği diller ve diğer teknik ayrıntılara ulaşabilirsiniz
Delphi Xe8 i açıyoruz
Formumuzu Resimdeki Gibi Düzenliyoruz.
uses a
uses superobject, superxmlparser,msxml;
ekliyoruz
String parse Procedure miz
procedure response(const This, Params: ISuperObject; var Result: ISuperObject); var obj: ISuperObject; begin with frm_YandexTranslate.Memo2.Lines do begin BeginUpdate; try Clear; case Params.I['code'] of 200: for obj in Params['text'] do begin Add(obj.format(Params.S['text'],'[',']')); end else Add(Params.S['message']); end; finally EndUpdate; end; end; end;
Çevir Buttonundaki kodlarımız
procedure Tfrm_YandexTranslate.btn_CevirClick(Sender: TObject); var req: IXMLHttpRequest; o: ISuperObject; begin if ComboBox1.Text='' then begin ShowMessage('Kaynak Dil Seçimi Boş Olamaz'); ComboBox1.SetFocus; abort; end; if ComboBox2.Text='' then begin ShowMessage('Hedef Dil Seçimi Boş Olamaz'); ComboBox2.SetFocus; abort; end; if ComboBox1.Text=ComboBox2.Text then begin ShowMessage('Kaynak Ve Hedef Dil Aynı Olamaz'); ComboBox2.SetFocus; abort; end; if edt_apikey.Text='' then begin ShowMessage('Yandex Api Key Boş Olamaz'); edt_apikey.SetFocus; Abort; end; req:=CoXMLHTTP.Create; req.open('GET', 'https://translate.yandex.net/api/v1.5/tr.json/translate?key='+edt_apikey.Text+'&lang='+ComboBox1.Text+'-'+ComboBox2.Text+'&text='+UTF8Encode(Memo1.Lines.Text)+'&callback=myCallback', False,EmptyParam, EmptyParam); req.send(EmptyParam); o := so; o.M['myCallback'] := response; o[req.responseText]; end;
Kaynak Kod ve exe dosyasını indirmek için tıklayın.
myCallback'({"code":404,"message":"Maximum daily translated text volume exceeded"})
Bu uyarıyı alırsanız günlük translate limitiniz bittiği anlamına gelir.