文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 378
阅读 8
收藏 0

调用 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

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/10/28/1591380.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
JSon SuperObject 研究2:数据集与JSON对象互转

JSon SuperObject 研究2:数据集与JSON对象互转 JSON不能完全替代XML,但绝对是未来的大势所趋,其优点是简单、体积小、解析更快、解析占用资源更少。在delphi中,数据集是最常用数据存取方式...

vga
2014/12/20
0
1
使用 vue-i18n 切换中英文

vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n 兼容性: 支持 Vue.js 2.x 以上版本 安装方法:(此处只演示 npm) npm install vue-i18n 使用方法: 1、在 main.js 中引入 vue-i1...

JamesView
04/24
0
0
20非常有用的Java程序片段

下面是20个非常有用的Java程序片段,希望能对你有用。 1. 字符串有整型的相互转换 2. 向文件末尾添加内容 3. 得到当前方法的名字 4. 转字符串到日期 或者是: 5. 使用JDBC链接Oracle 6. 把 ...

crazyinsomnia
2009/12/27
5.6K
25
第1169期AI100_机器学习日报(2017-11-30)

AI100机器学习日报 2017-11-30 一文概览图卷积网络基本结构和最新进展 @算法组 基于强化学习的文本分类 @PaperWeekly DeepMind推出最新强化学习环境「Gridworlds」 @ChatbotsChina PyTorch个...

ai100_ml
2017/12/12
0
0
译文:笔记本软件 Quiver 简介

英文原文:http://happenapps.com 原文作者:HappenApps, Inc. 中译:不迟any Quiver 程序员的笔记本 Quiver app icon 概述 Quiver 是一款为程序员打造的笔记本。它可以让你方便的在一条笔记...

不迟any
2017/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

码云项目100,水一发

简单回顾一下: 早期构想最多的,是希望能将PHP一些类和编码分区做得更细,所以很多尝试。但不得不说,PHP的功能过于单一,是的,也许写C/C++扩展,可以解决问题,那我为什么不用C#或者Golan...

曾建凯
今天
1
0
Spring应用学习——AOP

1. AOP 1. AOP:即面向切面编程,采用横向抽取机制,取代了传统的继承体系的重复代码问题,如下图所示,性能监控、日志记录等代码围绕业务逻辑代码,而这部分代码是一个高度重复的代码,也就...

江左煤郎
今天
4
0
eclipse的版本

Eclipse各版本代号一览表 Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。 Eclipse基本内核包括:图形API(SWT/Jface),Java开发环...

mdoo
今天
3
0
SpringBoot源码:启动过程分析(一)

本文主要分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 还是老套路,先把分析过程的时序图摆出来:时序图-SpringBoot2.10启动分析 二.源码分析 首...

Jacktanger
今天
6
0
小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部