【AWS】DeepLのAPIで翻訳してみた【Lambda】
この記事は.NET Core 3.1で書かれたAWS Lambdaから、DeepLのAPIを呼び出して日本語から英語へ翻訳する方法を解説したものです。
こんにちは!らびです。今回はDeepLのAPIを使って翻訳していきます。
これさえあればどんな言語のドキュメントにもばっちり対応できますね!
アカウントの登録
DeepLの翻訳サービスにはブラウザ版とAPI版が存在します。ブラウザ版はだれでも自由に利用することができますが、今回はAPI版を使うためアカウントの登録を行います。
APIをクリックして…
無料で登録するからアカウントを登録しましょう。
無料版でもクレジットカードの登録が必要だジョ。
実装
それでは早速実装です。今回は.NET Core 3.1のAWS LambdaからAPIを呼び出します。
public GlbResponseBody GetAction(GlbRequestBody glbRequestBody) { try { string argTargetLang = glbRequestBody.TargetLang; string argText = glbRequestBody.Text; string returnString = ""; using (var client = new HttpClient()) using (var request = new HttpRequestMessage()) { var queryString = new Dictionary<string, string>() { { "target_lang", argTargetLang }, { "text" , argText } }; request.RequestUri = new Uri($"https://api-free.deepl.com/v2/translate?{new FormUrlEncodedContent(queryString).ReadAsStringAsync().Result}"); request.Method = HttpMethod.Post; request.Headers.Add("ContentType", "application/x-www-form-urlencoded"); request.Headers.Add("Authorization", "DeepL-Auth-Key -kokoni auth key wo nyuryoku-"); using (HttpResponseMessage response = client.SendAsync(request).Result) { returnString = response.Content.ReadAsStringAsync().Result; } } TrnResponse trnResponse = JsonSerializer.Deserialize<TrnResponse>(returnString, GlbUtil.GetJsonSerializerOptionsDefault()); GlbResponseBody glbResponseBody = new GlbResponseBody(); glbResponseBody.Text = trnResponse.Translations.Count > 0 ? trnResponse.Translations[0].Text : "translation error."; return glbResponseBody; } catch (System.Exception e) { throw e; } }
翻訳元の文字列をクエリパラメータとして渡すこと、ヘッダーのAuthorizationキーに認証キーを入れることがポイントです。
GitHubにソースコードを載せているので、よろしければ参考にしてくださいだジョ。
参考
DeepL
www.deepl.com