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
}


本例效果图:



代码文件:


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
时间: 2024-12-27 10:51:58

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

XE3随笔19:实例 - 借用 Google 实现全文翻译

调用 Google 翻译的地址格式: http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" + 原始文本 + "&langpair=" + 原语言 + "%7C" + 目标语言 返回的数据格式如下, 可以用 responseData.translatedText 简单获取: { "responseData" : {"trans

JSON 之 SuperObject(15): 实例 - 模拟 Google 搜索

本例测试效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Memo1: TMemo;     Edit1: TEdit;     Button1: TButton;     procedure Button1Cl

JSON 之 SuperObject(16): 实例 - 解析 Google 关键字搜索排名

同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名. 我用 Delphi 为关键字得到的结果是: window.google.ac.h( ["Delphi",[ ["delphi 教程", "375,000 结果", "0"], ["delphi盒子", &q

用JSON 和 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

具体实例谈google和百度搜索引擎

谷歌彻底被禁让人惋惜,百度的“道德”,能力让人堪忧. 对于程序员来说,使用百度就代表被他折磨. 希望天朝的国民早日醒悟过来,切不可闭关锁国,妄自尊大. 中国已经拉下了无数步,如果还继续这样会不会被拖死. 具体实例谈google和百度搜索引擎

jquery JSON的解析方式实例分享

本文以jquery异步获取的数据类型——json对象和字符串为依据,介绍两种方式获取到的结果处理方式. 这里考虑都考虑的是服务器返回的是JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明. 这里首先给出JSON字符串集,字符串集如下:var data="{root:[{name:'1',value:'0'},{name:'6101',value:'西安市'},{name:'6102',value:'铜川市'},{name:'6103

JSON之三:获取JSON文本并解释(以google的天气API为例)

google提供了天气的api,以广州天气为例,地址为: http://api.openweathermap.org/data/2.5/weather?q=guangzhou 返回的结果为: { "coord": { "lon": 113.25, "lat": 23.12 }, "sys": { "message": 0.2088, "country": "CN",

Json.Net介绍及实例

本系列教程假设读者已经对Json有一定的了解,关于Json在这里不多说.本系列教程希望能对读者开发涉及到Json的.Net项目有一定的帮助.本系列教程是根据官方文档资料和自己项目应用汇总而成.如果觉得本系列对你有用,望多多关注.本人还只是个未毕业的学生,水平有限,尽请指正. 一.Json.Net有什么用? Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单.通过Linq To JSON可以快速的读写Json,通过JsonSeri

XE3随笔17:实例 - 模拟 Google 搜索

本例测试效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Memo1: TMemo;     Edit1: TEdit;     Button1: TButton;     procedure Button1Cl