zoukankan      html  css  js  c++  java
  • JSON 之 SuperObject(17): 实例 借用 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 = 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
    
  • 相关阅读:
    1026 Table Tennis (30)
    1029 Median
    1025 PAT Ranking (25)
    1017 Queueing at Bank (25)
    1014 Waiting in Line (30)
    1057 Stack (30)
    1010 Radix (25)
    1008 Elevator (20)
    字母大小写转换
    Nmap的基础知识
  • 原文地址:https://www.cnblogs.com/del/p/1591380.html
Copyright © 2011-2022 走看看