読者です 読者をやめる 読者になる 読者になる

【Android】翻訳API (Microsoft Translator API)

 

翻訳アプリをつくりたいきときには、翻訳APIが必要ですよね。

翻訳APIの使い方についてになります。

 

Microsoft Translator API」を使います。

・準備編

・実装編①②

で説明します。

 

準備編 

Microsoft DataMarket のMicrosoft Translator - Text Translationで、

 料金プランを選択し、アプリケーションの登録を行います。

 料金プランは、「2,000,000万文字/月  0円」をここでは選択します。

 そのまますすんで、アプリケーション登録まで行ってください。

 

 

  ・クライアント ID       ※一意になるものを決めてください
  ・名前                         ※適当につけてください
  ・顧客の秘密       ※自動で払いだされているものをそのままで
  ・リダイレクト URI          ※https://localhost/ など適当で可
  ・サブドメインアクセスを有効にする  ※オフのまま

 

「クライアント ID」と「顧客の秘密」をこの後で使います。

Microsoft Translator - Text Translation | Microsoft Azure Marketplace

f:id:stanleyblenz:20161103015223p:plain

 

 

----------------------------------------------------------------------------------------------------------------

以下から実装編になります。

実装編①

▼アクセストークン取得 

//Microsoft Translator APIのアクセストークン取得
String accessToken = "";
String ACCESS_URI = "https://datamarket.accesscontrol.windows.net/v2/OAuth2-13";
String client_id = //クライアント ID
String client_secret = //顧客の秘密
String grant_type = "client_credentials";      ※固定値
String scope = "http://api.microsofttranslator.com";  ※固定値
String body =
  String.format("grant_type=%s&client_id=%s&client_secret=%s&scope=%s",
    URLEncoder.encode(grant_type, "UTF-8"),
    URLEncoder.encode(client_id, "UTF-8"),
    URLEncoder.encode(client_secret, "UTF-8"),
    URLEncoder.encode(scope, "UTF-8"));
RequestBody requestBody = RequestBody.create(
  MediaType.parse("application/x-www-form-urlencoded"), body
);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(ACCESS_URI).post(requestBody).build();
Response response = client.newCall(request).execute();
String result = response.body().string();
JSONObject resJson = new JSONObject(result); ▼返却値はJSONです
accessToken = resJson.getString("access_token"); 

 

▼返却値のJSONの例
{
"token_type": "http://schemas.xmlsoap.org/ws/2009/11/swt-token-profile-1.0",
"access_token": "http%3a%2f%2fschemas.xmlsoap.org%2fws%2f2005%2f05%2fidentity%2fclaims%2fnameidentifier=....",
"expires_in": "600",
"scope": "http://api.microsofttranslator.com"
}
 

----------------------------------------------------------------------------------------------------------------

実装編②

▼翻訳API+日本語取得

text=    ※翻訳したいもの
from=en ※英語から
to=ja         ※日本語へ

String japanese = "";
Elements elements = null;
OkHttpClient client = new OkHttpClient();
String APIKEY = accessToken;
String url1 = "http://api.microsofttranslator.com/v2/Http.svc/Translate";
String opt1 = "?text=";
String opt2 = "&from=en";
String opt3 = "&to=ja";
String translatorsiteurl = url1 + opt1 + english + opt2 + opt3;
Request request = new Request.Builder()
   .addHeader("Authorization", "Bearer " + accessToken)
   .url(translatorsiteurl)
   .build();
try {
  Response response = client.newCall(request).execute();
  String result = response.body().string();
  Document doc = Jsoup.parse(result);
  elements = doc.select("body");
} catch (Exception e) {
  e.printStackTrace();
}
for (Element element : elements) {

  japanese = element.text();
}

 

以上になります。