打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Delphi APP 開發入門(十一)Microsoft Azure Translator實戰 by superlevin | CodeData

Delphi APP 開發入門(十)REST Client 開發<<前情

微軟的Microsoft Azure Marketplace有許多不錯的資料可以應用,今天就跟大家分享如何利用XE8搭配Microsoft Translator線上翻譯服務來做翻譯的app。
一、註冊Azure帳戶

點選 https://datamarket.azure.com/dataset/bing/microsofttranslator 上的登入,使用個人。然後依照步驗註冊就好。

 

二、訂閱服務
進入 https://datamarket.azure.com/dataset/bing/microsofttranslator ,點選2,000,000字元數/月的免費方案註冊。

 

三、註冊程式
程式中需要client_id跟client_secret ,所以到 https://datamarket.azure.com/developer/applications 註冊程式。

client_id就是用戶端識別碼

client_secret就是用戶端密碼

 

四、建立程式

新增一個Multi-Device Application,然後選擇Blank Application

接著在畫面上新增加三個元件,TRESTClient、TRESTRequest跟TRESTResponse。重新命名為RESTClientAuthToken、RESTRequestAuthToken跟RESTResponseAuthToken.

其中RESTClientAuthToken的BaseURL設定 https://datamarket.accesscontrol.windows.net/v2

 

RESTRequestAuthToken的Method改為rmPOST、然後Resource設為OAuth2-13(參考 https://msdn.microsoft.com/en-us/library/hh454950.aspx

然後在Params增加四個參數如下

 

然後在畫面上佈置如下

 

接下來,可以下拉View的功能,去看看在不同解析度、尺寸下的樣式,然後調整。

 

 

在取得Token值的按鈕寫上以下程式

1
2
3
4
5
6
7
8
9
10
11
var
  token: string;
begin
  RESTRequestAuthToken.Params.ParameterByName('client_secret').Value := EditClient_Secret.Text;
  RESTRequestAuthToken.Params.ParameterByName('client_id').Value := EditClient_ID.Text;
  RESTRequestAuthToken.Execute;
  if RESTResponseAuthToken.GetSimpleValue('access_token',token) then
  begin
    EditToken_value.Text := token;
  end;
end;

確定成功取得Token值後我們可以開始著手寫翻譯的程式,參考的文件為(https://msdn.microsoft.com/en-us/library/ff512387.aspx),一樣增加三個元件,TRESTClient、TRESTRequest跟TRESTResponse。

重新命名為RESTClientTranslate、RESTRequestTranslate跟RESTResponseTranslate.。
RESTClientTranslate的BaseURL設為 http://api.microsofttranslator.com/v2/Http.svc

接著在RESTRequestTranslate的Resource設為Translate?text={text}&from={from}&to={to}

 

一樣在裡面增加四個Params,from跟to需要對應相關的語言代碼(參考https://msdn.microsoft.com/en-us/library/hh456380.aspx

 

在畫面上增加combobox二個(選擇翻譯的語系),以及二個memo及button(翻譯)。

開啟view→LiveBindings Designer,將RESTRequestTranslate中的Params.text指到Memo1的Text(輸入),然後RESTResponseTranslate.的Content指向Memo2的Text(輸出)。

翻譯的按鈕程式碼如下

1
2
3
4
RESTRequestTranslate.Params.ParameterByName('Authorization').Value := 'bearer '+EditToken_value.Text;
RESTRequestTranslate.Params.ParameterByName('from').Value := cbFrom.Selected.Text;
RESTRequestTranslate.Params.ParameterByName('to').Value := cbToo.Selected.Text;
RESTRequestTranslate.Execute;

語言念出翻譯內容的方式也很簡單,參考文件語音的部份(參考 https://msdn.microsoft.com/en-us/library/ff512420.aspx)
增加一個RESTRequestPlay,然後設定Resource為 speak?text={text}&language={language}&to={to}&format=audio/mp3&options=MinSize 。
三個Param為 Authorization、text、language以及增加mediaplayer。

念出語音的原始碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  MS: TMemoryStream;
  TempFile: string;
begin
  RESTRequestPlay.Params.ParameterByName('Authorization').Value := 'bearer '+EditToken_value.Text;
  RESTRequestPlay.Params.ParameterByName('language').Value := RESTRequestTranslate.Params.ParameterByName('to').Value;
  RESTRequestPlay.Params.ParameterByName('text').Value := RESTResponseTranslate.Content;
  RESTRequestPlay.Execute;
  MS := TMemoryStream.Create;
  try
    MS.WriteData(RESTResponsePlay.RawBytes,Length(RESTResponsePlay.RawBytes));
    TempFile := TPath.ChangeExtension(TPath.GetTempFileName,'.mp3');
    MS.SaveToFile(TempFile);
    MediaPlayer1.FileName := TempFile;
    MediaPlayer1.Play;
  finally
    MS.Free;
  end;
end;

完整API參考網址 API參考

https://msdn.microsoft.com/en-us/library/dd576287.aspx

程式碼下載

https://github.com/superlevin/XE8microsofttranslator

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
仅需10分钟!教你用Python开发钉钉通知机器人
Python—requests模块详解
当语音助手遇到机器人
我去!爬虫遇到JS逆向AES加密反爬,哭了
推荐八个有趣的网站,你也许会喜欢
速记单词 | 每天1分钟记住一个词:translate into
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服