调用 Google 翻译的地址格式:
http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + 原始文本 + "&langpair=" + 原语言 + "%7C" + 目标语言
返回的数据格式如下, 可以用 responseData.translatedText 简单获取:
{
"responseData" : {"translatedText" : "返回的文本"},
"responseDetails" : null,
"responseStatus" : 200
}
本例效果图:
代码文件:
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