调用 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 =
  Top =
  Caption = 'Form1'
  ClientHeight =
  ClientWidth =
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch =
  TextHeight =
  object Memo1: TMemo
    Left =
    Top =
    Width =
    Height =
    Align = alLeft
    Lines.Strings = (
      'Memo1')
    TabOrder =
    ExplicitHeight =
  end
  object Button1: TButton
    Left =
    Top =
    Width =
    Height =
    Caption = #33521#25991' -> '#20013#25991
    TabOrder =
    OnClick = Button1Click
  end
  object Memo2: TMemo
    Left =
    Top =
    Width =
    Height =
    Align = alRight
    Lines.Strings = (
      'Memo2')
    TabOrder =
    ExplicitLeft =
    ExplicitTop = -
    ExplicitHeight =
  end
  object Button2: TButton
    Left =
    Top =
    Width =
    Height =
    Caption = #33521#25991' <- '#20013#25991
    TabOrder =
    OnClick = Button2Click
  end
end

XE3随笔19:实例 - 借用 Google 实现全文翻译的更多相关文章

  1. 用JSON 和 Google 实现全文翻译

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  2. Python爬虫教程-16-破解js加密实例(有道在线翻译)

    python爬虫教程-16-破解js加密实例(有道在线翻译) 在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签 ...

  3. GDPR全文翻译(一)

    General Data Protection Regulation <一般数据保护法案>全文翻译(一) 编者按 2016年4月14日,欧洲议会投票通过了商讨四年的<一般数据保护法案 ...

  4. the evolution of Lua 全文翻译

    终于赶在春节前将论文全文翻译完,以后有时间将前面三章重新翻译一次,因为刚开始的时候没打算全文翻译的..第一次每天花25分钟完成这么长的一篇翻译,证明滴水可以穿石,哈哈哈 中文地址:Lua的演进 祝各位 ...

  5. 关闭google默认打开翻译提醒

    关闭google默认打开翻译提醒 在header中添加以下代码: <meta name="google" content="notranslate" /& ...

  6. XE3随笔18:实例 - 解析 Google 关键字搜索排名

    同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名 ...

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

    本例测试效果图: 代码文件: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics ...

  8. 借用Google API在线生成网站二维码地址方法

    二维码其实很早就出现了,在国外很多年前就已经在应用了,国内这两年才开始异常的火爆,智能手机的发展,以及微博.微信等移动应用带动了二维码的普及.那么,如果为网址在线生成二维码呢?下面我们就来介绍一下Go ...

  9. Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(无图)

    注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYinYinQi ...

随机推荐

  1. nginx转发post消息成301了

    刚才开始是:第一次遇到这个问题是因为不支持sslv3 后来测试的时候,是因为没注意https的导致http 301跳转https post请求nginx转发成301了,到时post数据丢失

  2. 浅谈 JS 创建对象的 8 种模式

    1.Object 模式 var o1 = {};//字面量的表现形式 var o2 = new Object; var o3 = new Object(); var o4 = new Object(n ...

  3. python随便笔记。。。

    一.input().strip(),strip()的作用是不读取用户输入的空格 s.strip(rm)        删除s字符串中开头.结尾处,位于 rm删除序列的字符s.lstrip(rm)    ...

  4. SSM项目配置随笔

    一.自动扫描 使用Annotation自动注册Bean:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解. 1.spring配置文件(扫描注解) &l ...

  5. linux小程序--cmatrix

    wget http://www.asty.org/cmatrix/dist/cmatrix-1.2a.tar.gz .2a.tar.gz cd cmatrix-.2a yum install ncur ...

  6. Java面试宝典答案详解与感悟(第二天)

    19.构造器 Constructor 是否可被 override? 答案:构造器Constructor不能被继承,因此不能重写Override,但是可以被重载Overload. 解析:构造器:在面向对 ...

  7. 邮件中继成畅邮标配 U-Mail为何领先

    中国力推“一带一路”战略,为首成立“亚投行”,越来越多的中国企业酝酿走出去.在企业间的商务往来中,电子邮件将扮演着重要角色,但是因为要跨洋 过海,各国互联网环境和法律法规有所区别,面临着种种变数,对方 ...

  8. centos7配置wordpress

    1.安装Apache和mariadb yum -y install httpdyum -y install mariadb-server mariadb 2.设置开机启动 systemctl enab ...

  9. windows 下 gvim打开默认全屏显示

    在_vimrc文件中加入如下配置即可: autocmd GUIEnter * simalt ~x

  10. Git命令学习摘要

    1.git init  --初始化git项目 2.git status --查看项目的状态 3.git add filename --添加文件到项目 4.git diff filename --查看工 ...