XE3随笔19:实例 - 借用 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 =
- 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 实现全文翻译的更多相关文章
- 用JSON 和 Google 实现全文翻译
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- Python爬虫教程-16-破解js加密实例(有道在线翻译)
python爬虫教程-16-破解js加密实例(有道在线翻译) 在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent 图形验证,还有很难破解的滑动验证 js签 ...
- GDPR全文翻译(一)
General Data Protection Regulation <一般数据保护法案>全文翻译(一) 编者按 2016年4月14日,欧洲议会投票通过了商讨四年的<一般数据保护法案 ...
- the evolution of Lua 全文翻译
终于赶在春节前将论文全文翻译完,以后有时间将前面三章重新翻译一次,因为刚开始的时候没打算全文翻译的..第一次每天花25分钟完成这么长的一篇翻译,证明滴水可以穿石,哈哈哈 中文地址:Lua的演进 祝各位 ...
- 关闭google默认打开翻译提醒
关闭google默认打开翻译提醒 在header中添加以下代码: <meta name="google" content="notranslate" /& ...
- XE3随笔18:实例 - 解析 Google 关键字搜索排名
同上例类似, 通过 'http://clients1.google.cn/complete/search?&q=' + "关键字" 可以获取 Google 的关键字搜索排名 ...
- XE3随笔17:实例 - 模拟 Google 搜索
本例测试效果图: 代码文件: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics ...
- 借用Google API在线生成网站二维码地址方法
二维码其实很早就出现了,在国外很多年前就已经在应用了,国内这两年才开始异常的火爆,智能手机的发展,以及微博.微信等移动应用带动了二维码的普及.那么,如果为网址在线生成二维码呢?下面我们就来介绍一下Go ...
- Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(无图)
注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYinYinQi ...
随机推荐
- Jquery day02
jquery day01回顾 语法: $("选择器") , $(dom对象) , $("<div>") 选择器: 基本:#id.ele ...
- Windows程序设再读笔记02-Unicode
1.ASCII,7位编码,共128个编码,1950年ansi提出. 2.变种的Ascii,0x40等10个代码保留各个国家单独使用,1967年由iso提出.旨在解决重音符号,英镑符号的问题. 3.扩展 ...
- Nodejs+Express创建HTTPS服务器
为了使我的Nodejs服务器提供HTTPS服务,学习了一下如何利用express创建https服务器,现记录如下.(一点一点的积累与掌握吧) 1. Http与Https 介绍 HTTP: 超文本传输协 ...
- xml---sax操作
<?xml version="1.0" encoding="UTF-8"?> <书架> <书> <书名>书名1& ...
- Centos 6.5 下php5.6.2 的编译安装
纯净的Centos 6.5系统 配置163yum源 (稍后会写一篇文档) 安装 开发软件包:yum -y groupinstall "Development Tools" 安 ...
- C语言的文法分析
<程序> -> <声明> | <程序> <函数> <声明> -> #include<stdio.h>|# ...
- linux 学习1
这里主要是听讲的一些东西的总结, thanks to lamp brother ____安装虚拟机 vmware 8.0.4, 因为高版本占用空间大,没必要 cent OS 6.3 linux 版本 ...
- 【原】相煎何太急——input的blur事件与button的click事件
先来一段引子,最近在写手机h5页面,主要是一些登陆注册方面的,最绕不开的就是表单元素. 我想实现的是:在输入框后边有一个删除图标,当输入东西的时候触发事件,显示删除图标,点击该图标会删除之前输入的内容 ...
- SQL 高效分页查询
declare @page int --页码 declare @pagecount int;--每一页显示的记录数 select * from (select *,row_number() over( ...
- Python3
1.上节内容回顾 递归: 明确的结束条件 问题规模每递归一次都应该比上一次的问题规模有所减少 效率低 高阶函数 文件: rb.wb.ab 一般用在不同系统之间传数据,和传视频流的时候用到,一般以这种形 ...