JSON 之 SuperObject(17): 实例 - 借用 Google 实现全文翻译


调用 Google 翻译的地址格式:

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + 原始文本 + "&langpair=" + 原语言 + "%7C" + 目标语言

返回的数据格式如下, 可以用 responseData.translatedText 简单获取:

{

  "responseData" : {"translatedText" : "返回的文本"}, 

  "responseDetails" : null, 

  "responseStatus" : 200

}


 
   

本例效果图:

JSON 之 SuperObject(17): 实例 - 借用 Google 实现全文翻译

代码文件:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Memo1: TMemo;

    Memo2: TMemo;

    Button1: TButton;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



uses MsXML, SuperObject;



//字符串到 UTF8 编码的函数, 用于 Google 地址

function ToUTF8Encode(str: string): string;

var

  b: Byte;

begin

  for b in BytesOf(UTF8Encode(str)) do

    Result := Format('%s%s%.2x', [Result, '%', b]);

end;



//翻译函数

function Translate(str, RequestLanguage, ResultLanguage: string): string;

const

  BaseUrl = 'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=';

var

  Url: string;

  jo: ISuperObject;

  req: IXMLHTTPRequest;

begin

  Url := BaseUrl + ToUTF8Encode(str) + '&langpair=' + RequestLanguage + '%7C' + ResultLanguage;

  req := CoXMLHTTP.Create;

  req.open('Get', Url, False, EmptyParam, EmptyParam);

  req.send(EmptyParam);

  jo := SO(req.responseText);

  Result := jo.Format('%responseData.translatedText%');

end;



//英译汉

procedure TForm1.Button1Click(Sender: TObject);

begin

  Memo2.Text := Translate(Memo1.Text, 'en', 'zh-cn');

end;



//汉译英

procedure TForm1.Button2Click(Sender: TObject);

begin

  Memo1.Text := Translate(Memo2.Text, 'zh-cn', 'en');

end;



end.


 
   

窗体文件:

object Form1: TForm1

  Left = 0

  Top = 0

  Caption = 'Form1'

  ClientHeight = 139

  ClientWidth = 459

  Color = clBtnFace

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

  Font.Name = 'Tahoma'

  Font.Style = []

  OldCreateOrder = False

  PixelsPerInch = 96

  TextHeight = 13

  object Memo1: TMemo

    Left = 0

    Top = 0

    Width = 185

    Height = 139

    Align = alLeft

    Lines.Strings = (

      'Memo1')

    TabOrder = 0

    ExplicitHeight = 202

  end

  object Button1: TButton

    Left = 191

    Top = 24

    Width = 75

    Height = 25

    Caption = #33521#25991' -> '#20013#25991

    TabOrder = 1

    OnClick = Button1Click

  end

  object Memo2: TMemo

    Left = 274

    Top = 0

    Width = 185

    Height = 139

    Align = alRight

    Lines.Strings = (

      'Memo2')

    TabOrder = 2

    ExplicitLeft = 312

    ExplicitTop = -8

    ExplicitHeight = 202

  end

  object Button2: TButton

    Left = 191

    Top = 72

    Width = 75

    Height = 25

    Caption = #33521#25991' <- '#20013#25991

    TabOrder = 3

    OnClick = Button2Click

  end

end


 
   

你可能感兴趣的:(Google)