zoukankan      html  css  js  c++  java
  • JSON 之 SuperObject(17): 实例

    调用 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
  • 相关阅读:
    繁星CSS3之旅-CSS基本样式-CSS文本字体
    繁星CSS3之旅-CSS基本样式-CSS文本
    繁星CSS3之旅-CSS基本样式-CSS背景
    繁星CSS3之旅-CSS入门基础知识
    繁星H5之旅-前端学习入门
    繁星H5之旅-HTML5表单新增元素与属性
    字符串分割split()
    返回指定的字符串首次出现的位置
    python中非关键字可变长参数和关键字变量参数的区别
    喝了一碗毒鸡汤
  • 原文地址:https://www.cnblogs.com/cpprun/p/4788008.html
Copyright © 2011-2022 走看看