文档章节

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
js中this的总结(转载)

在面向对象编程语言中,对于this关键字我们是非常熟悉的。比如C++、C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的。JavaScr...

xiaoqiang
2010/05/30
35
0
使用 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
2018/04/24
0
0
20非常有用的Java程序片段

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

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

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

ai100_ml
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

听说拼多多因漏洞被薅了200亿?- 谈谈软件测试

昨天看到一个大新闻:拼多多在20日凌晨出现漏洞,用户可以领100元无门槛优惠券。一夜之间,被黑产、羊毛党和闻讯而来的吃瓜群众薅了个底朝天,直到第二天上午9点才将优惠券下架。网上传言这一...

crossin
33分钟前
2
0
微服务架构有毒,何时不使用微服务?

在过去的四年中,使用微服务来构建应用程序似乎成了一种标准。大多数我所合作过的团队也对此表现出了不同程度的兴趣。 微服务所承诺的弹性、高可用、低耦合、敏捷,以及能够解决单体架构带来...

架构师springboot
38分钟前
2
0
日志服务Python消费组实战(三):实时跨域监测多日志库数据

摘要: 本文主要介绍如何使用消费组实时监控多个域中的多个日志库中的异常数据,并进行下一步告警动作。具备配置简单、逻辑灵活、支持跨域多Region、实时监测,无需配置索引等特点,并且性能...

阿里云云栖社区
39分钟前
2
0
常用css动效

1.列表浮层变化动效 demo地址 下载地址 2.js动画库 github地址 3.滚动加载 Scrollreveal 4.其他动效 tobiasahlin

chinahufei
40分钟前
3
0
Coding and Paper Letter(四十六)

资源整理。 1 Coding: 1.卫星影像深度学习资源。 satellite image deep learning 2.runoff tools为MOM生成径流文件的一些工具变得轻而易举。 runoff tools 3.NOAA-GFDL海冰模拟器V2.0。 SIS2...

胖胖雕
42分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部